2010-09-20 35 views
5

这是使用在与jQuery结合PHP代码IM .ajax的创建一个新的鸣叫:使用PHP和微博API创建答复

/* Create a TwitterOauth object with consumer/user tokens. */ 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']); 

    $qtweet = $_POST['tweet']; 
    $connection->post('statuses/update', array('status' => $qtweet)); 

数据由形式供应和位的jQuery阿贾克斯的:

<form id="tweethis" method='post' action=''> 
    <textarea style="width: 42em;" name="tweet" rows="5" id="tweet" ></textarea> 
    <br /> 
    <p class="confirm" style="padding-bottom: 4px;">Tweet Sent.</p> 
    <span id="charLeft">140</span> Characters left 
    <br /> 
    <input type='submit' value='Tweet This!' name='submit' id='submit' /> 
</form> 

$("#tweethis #submit").click(function() { 
    //The Tweet 
    var tweettxt = $("textarea#tweet").val(); 
    var ptweettxt = 'tweet=' + tweettxt; 
    $.ajax({ 
     type: "POST", 
     url: "tweet.php", 
     data: ptweettxt, 
     success: function() { 
     $('#tweethis .confirm').css('color','red').slideDown(500).delay(3000).slideUp(500); 
     $('textarea#tweet').val(""); 
     } 
    }); 
    return false; 
}); 

我想适应的形式也处理回复,这样用户可以点击鸣叫的ID,这个ID被添加到窗体。该表格将需要另一个隐藏的领域,最初是空白的,所以当用户提交时没有回复ID,他们只是发送一个鸣叫。

但是我需要在PHP文件的一些代码来检查_POST为空或null,如果为null只是发出信息,但如果它有一个ID创建回复。

我怎样才能做检查,如果该字段为空或填充了ID?

我还需要帮助创建答复。

的文档是在这里:http://dev.twitter.com/doc/post/statuses/update

这是我至今写了PHP:

$qtweet = $_POST['tweet']; 
$tweetid = $_POST['tweetid']; 
$connection->post('statuses/update', array('status' => $qtweet, 'in_reply_to_status_id => $tweetid')); 

不知道如果我正确contructing数组或这是可以接受的Twitter的API。

的阿贾克斯将是小巫见大巫了这一切,我将只通过隐藏的表单值作为_POST另一个值。

任何与此有关的帮助都非常感谢,这是我完成我的第一个PHP项目所剩下的最后一件事,我创建了我自己的Twitter客户端,专门用于会议中使用hashtag来跟踪反向通道。

回答

0

您使用empty()检查,如果事情是空=)

也需要更正这一行...

$connection->post('statuses/update', array('status' => $qtweet, 'in_reply_to_status_id' => $tweetid)); 

不要把变量引号

也许像

if (empty($_POST['tweetid'])) { 
    $connection->post('statuses/update', array('status' => $qtweet)); 
} 
else { 
    $connection->post('statuses/update', array('status' => $qtweet, 'in_reply_to_status_id' => $_POST['tweetid'])); 
} 

你只要把鸣叫的ID形式

+0

虽然代码正确,但它似乎不会生成回复。发送推文时,in_reply_to ...部分不会填充。 – CLiown 2010-09-21 12:56:34

+0

我在代码中修复了一个错误。你必须确保设置$ _POST ['tweetid'] – Galen 2010-09-21 15:07:51

1

你可以有隐藏字段的形式对所有的默认值为0的时间。然后在点击关闭使用获得的隐藏字段的值,并在阿贾克斯后提交。

PHP的控制器可以再看看贴值,如果是0,则应该建立后,以Twitter的API作为状态更新。当它大于0时,构建帖子以包含'in_reply_to_status'属性和从表单帖子获得的值。

然后你的“回复”链接将有一些JS用适当的ID更新隐藏的表单元素。

不知道如何建设后,以Twitter的API本身虽然。希望这有助于一些。

0

我认为这个问题是在此片段中

'in_reply_to_status_id => $tweetid' 

它应该是

'in_reply_to_status_id' => $tweetid 

除此之外,盖伦的answer是值得考虑的。

0

这里有一些PHP将包括in_reply_to_status_id如果$_POST['tweetid']不是空的。

<?php 
$options = array(); 
$options['status'] = $_POST['tweet']; 
if (!empty($_POST['tweetid']) { 
    $options['in_reply_to_status_id'] = $_POST['tweetid']; 
} 
$connection->post('statuses/update', $options); 

Twitter API的最后一个问题是回复必须包含被回复的用户的screen_name。因此,如果@ bob回复@sarah,那么@sarah必须包含在$_POST['tweet']之内。此屏幕名称应包含在用户正在输入回复的文本框中。