这是与jQuery .ajax结合使用的PHP代码,用于创建新的推文:
/* 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 .ajax提供:
<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会添加到FORM中。 FORM将需要另一个隐藏字段,该字段最初将为空白,因此当用户提交没有回复ID时,他们只会发送推文。
但是我需要PHP文件中的一些代码来检查_POST是空还是空,如果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'));
不确定我是否正确构建了数组,或者这是Twitter API可接受的。
与所有这些相比,.ajax将是微不足道的,因为我只是将隐藏的表单值作为_POST中的另一个值传递。
任何对此的帮助都非常感激,这是我完成第一个PHP项目的最后一件事,我创建了自己专门设计用于会议的Twitter客户端,其中使用标签跟踪后台频道。
答案 0 :(得分:1)
您可以在表单上始终使用隐藏字段,默认值为0.然后在您的单击闭包中使用获取隐藏字段的值并在您的ajax帖子中提交。
然后PHP控制器可以查看发布的值,如果它是0,它应该将帖子构建为twitters api作为状态更新。当它大于0时,构建帖子以包含'in_reply_to_status'属性以及从表单帖子获得的值。
然后你的“回复”链接将有一些JS用正确的ID更新隐藏的表单元素。
虽然不确定如何构建对twitters api本身的帖子。希望这会有所帮助。
答案 1 :(得分: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放在
格式中即可答案 2 :(得分:0)
我认为问题在于此片段
'in_reply_to_status_id => $tweetid'
应该是
'in_reply_to_status_id' => $tweetid
除此之外,Galen的answer值得考虑。
答案 3 :(得分:0)
如果in_reply_to_status_id
不为空,则以下是一些包含$_POST['tweetid']
的PHP。
<?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']
中。此screen_name应包含在用户输入回复的文本框中。