我正在使用jQuery ajax將數據加載到jQuery選項卡中。它在Chrome和FireFox中運行良好。在IE8中,數據有時不會加載。如果我清除緩存或重新加載頁面,它顯然工作正常。使用IE8的jQuery ajax間歇性故障
據我可以告訴它關閉IE後失敗,然後在一段時間後再次啓動它。它在幾小時內失敗了,但如果延遲只有幾分鐘就成功了。至少這就是我認爲的失敗模式,我沒有嚴格確定一個神奇的時間。
ETA:它可以工作,如果我清除緩存或刷新頁面。
我已經在post數據中放了一個多餘的時間參數,並在ajax調用中設置了cache:false。
數據沒有被緩存,因爲如果我改變了預期的數據,它會正確地填充它。
另一個更新:
缺少一塊數據。這是一個Facebook應用程序。事實證明,這是至關重要的。 我嗅探了Wireshark的工作與非工作會話。事實證明,不同之處在於工作會議提交Facebook cookie,而不工作的則不提供。
所以現在的問題是如何強制ajax調用包含cookie。我發現的關於ajax調用的描述是它包含了cookie。我看到一個錯誤的行爲?
ETA:
的JavaScript:
$.ajaxSetup
(
{
// Disable caching of AJAX responses
cache: false
}
);
$(document).ready
(
function()
{
$('#shopTabs').tabs();
thing.create();
thing.editPicture();
$('#shopTabs').bind
(
'tabsselect',
function(event, ui)
{
thing.setReload(ui.index);
thing.setActive(ui.index);
}
);
}
);
// Must be global for Java to call
function reload()
{
thing.create();
thing.editPicture();
}
var thing =
{
reload : 0,
active : 0,
noOp : function()
{
},
create : function()
{
date = new Date();
$('#shopTabs1').load('create.php', {time : date.getTime()}, thing.linkform);
},
editPicture : function()
{
date = new Date();
$('#shopTabs2').load('editPicture.php', {time : date.getTime()}, thing.noOp);
},
linkform : function()
{
$('#upload').ajaxForm({target : '#shopTabs1'});
},
setReload : function
(
index
)
{
this.reload = this.reloadList[index];
},
setActive : function
(
index
)
{
this.active = this.activeList[index];
},
load : function
(
php,
args,
loadFn
)
{
var settings =
{
type : "POST",
cache : false,
url : php,
data : args,
context : this,
success : function (data)
{
$(this.active).html(data);
loadFn();
}
}
$.ajax(settings);
}
};
thing.activeList = ['#ui-tabs-1', '#shopTabs1', '#shopTabs2'];
thing.reloadList = [thing.noOp, thing.create, thing.editPicture];
服務器的響應頭是什麼? – 2011-03-12 21:23:58
除了Matt的問題,你可以發佈你的任何代碼嗎?這將有助於我們更好地回答這個問題。 – JasCav 2011-03-12 21:26:26