我做了一個表格來向數據庫插入新的狀態。我的場景使用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