我创建了一个表单来向数据库插入新状态。我的场景使用jquery AJAX post方法来完成工作,因此页面不需要重新加载。然后在方法完成后,它将调用另外两个ajax方法来刷新我的应用程序时间轴(这两个方法执行PHP脚本,这是调用Twitter API然后刷新我的页面上的时间轴)。 update_status方法成功但无法执行另外两个方法。有什么建议吗?我非常感谢您的反馈。
这是我的代码:
$(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, '$1@<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;
}
答案 0 :(得分:0)
我想result[i]['user']
中update_timeline
导致问题 - 可能是空值。你在使用javascript调试器吗?这应该显示结果对象的值是什么。
您还可以在ajax方法上定义错误回调,检查jqXhr(jquery http xml请求)对象的responseText - 它包含从服务器收到的响应。显然你期待一个json对象,但如果发生服务器错误,你可能会收到jquery不知道该怎么做的HTML。
$.ajax({
type: 'Post'
url: method_url,
data: dataString,
cache: false,
success: function() {},
error: function (jqHxr, statusText) {
//jqXhr.responseText holds the response sent from the server
}