我想創建一個通用的方式來在我的網頁中調用ajax請求。我創建了一個很好的小擴展方法來異步調用發佈請求。Ajax請求凍結網頁
$.tiqPost = function(action,data,callback)
{
alert('Posting...');
$.fancybox.showActivity();
$.ajaxSetup({async:true});
$.post('/portfolios/mod/t:'+action+'/',data,function(response)
{
callback(response);
$.fancybox.hideActivity();
alert('Finished Post.');
});
alert('Posting Set.');
}
但是,無論何時該請求觸發,我的頁面將無限期凍結。在某些版本的Chrome中,它凍結而沒有反饋(單擊停止工作,我無法關閉該選項卡)。然而,在大多數其他瀏覽器中,它顯示「發佈」,然後停止而沒有達到「發佈設置」或「完成發佈」。
因此,Chrome沒有捕獲任何錯誤,只是凍結。這令我非常困惑。任何人有任何提示(或甚至只是一個不同的實現)?
編輯:
這不會發生的每一個要求。事實上,讓我發表一些案例在哪裏工作,有些案例不適用。等一下...
編輯編輯:
所以在這個例子
$.tiqPost('newcat',{t:"n"},function(response)
{
if(response)
{
$tabs.tabs('add','#tiq-tab-'+response,"New Category",0);
}
});
我有沒有問題。但是:
$(this).bind('blur',function(postdata)
{
//blur
if(postdata==null)
postdata = {value:$(this).text()};
$.tiqPost($(this).attr('id').replace('tiq-submit-',''),
postdata,
function (response) {
$(this).text(response);
});
$(this).removeClass('tiq-editable-editstate');
$(this).attr('contentEditable','false');
});
導致凍結。
如果完全省略「ajaxSetup」,會發生什麼? – 2012-05-22 06:30:29
默認情況下async爲true。 – Jivings
你可以顯示'callback()'中的內容嗎? – Jivings