我做了一个表格来向数据库插入新的状态。我的场景使用jQuery AJAX post方法来完成这项工作,所以页面不需要重新加载。然后在完成该方法后,它将调用另外两个ajax方法来刷新我的应用程序时间表(这两个方法执行PHP脚本,这是调用Twitter API,然后刷新页面上的时间线)。 update_status方法成功,但无法执行另外两种方法。任何建议家伙?我非常感谢你的反馈。为什么我的JQuery AJAX无法成功执行某些方法?
这是我的代码:
$(document).ready(function(){
$(function() {
$("#update_status_btn").click(function() {
var user_id = $("#update_status #user_id").val();
var status = $("#update_status #status").val();
var dataString = 'user_id='+ user_id + '&status=' + status;
update_status('profile/update_status', dataString);
return false;
});
});
});
function update_status(method_url, dataString)
{
$.ajax({
type: 'POST',
url: method_url,
data: dataString,
cache: false,
success: function() {
//the following methods won't executed :-(
update_timeline('profile/get_user_timeline', '#user_timeline ul');
update_timeline('profile/get_home_timeline', '#home_timeline ul');
}
});
}
function update_timeline(method_url, target)
{
//get home timeline
$.ajax({
type: 'GET',
url: method_url,
dataType: 'json',
cache: false,
success: function(result) {
$(target).empty();
for(i=0;i<result.length;i++){
$(target).append('<li><article><img src="'+ result[i]['user']['profile_image_url'] +'"><a href="">'+ result[i]['user']['screen_name'] + '</a>'+ linkify(result[i]['text']) +'</li></article>');
}
}
});
}
function linkify(data)
{
var param = data.replace(/(^|\s)@(\w+)/g, '[email protected]<a href="http://www.twitter.com/$2" target="_blank">$2</a>');
var param2 = param.replace(/(^|\s)#(\w+)/g, '$1#<a href="http://search.twitter.com/search?q=%23$2" target="_blank">$2</a>');
return param2;
}
'#status'的内容是什么?你不是'URIEncode',如果某些字符存在,这可能是一个问题。 – lonesomeday 2012-01-14 14:28:14
你确定这个网址的状态是200吗?如果ajax调用不认为调用成功,则不调用成功选项中定义的函数。 – 2012-01-14 15:24:36
@ scott.korin嗯..我对这个AJAX的东西很新,我没有检查它。但我通过查看我的数据库手动检查,并成功插入新行。它也成功更新我的twitter状态。我和其他两种方法一起提供了成功回调函数的警报。警报显示出来。这意味着该方法是成功的吗?但其他方法似乎没有执行,因为我的时间表不会立即刷新。一件事,'update_timeline'没什么错,因为到目前为止它工作(我把我的脚本中每60秒调用一行代码,它的工作原理:-) – under5hell 2012-01-15 05:22:21