我遇到一些非常怪異的行爲與Ajax。或者這很正常。我不知道。我很喜歡玩Ajax。jQuery ajax代碼裏面的「成功」功能只適用於如果放在第一
我的問題是,我正在進行一些Ajax調用(兩個使用$.post()
,另一個使用標準$ajax()
調用),並且它們似乎可以很好地返回數據,但成功函數中的代碼只能用於非常奇怪的辦法。
我注意到有些東西如果放在第一行就可以執行;但爲什麼呢?這對我來說確實沒有任何意義。在這種情況下,我希望動態更新id爲link_span的跨度,因爲我的Ajax調用將設備彼此鏈接和取消鏈接。 (correct_classes函數計算鏈接已鏈接的數量,並將其添加到我使用窗口對象創建的link_counter變量中)。
但是,如果跨度只想在相應的代碼放在頂部時更新,那麼它就沒用了。
另一個問題是.ajaxComplete()
和其他這樣的事件處理程序並不總是被調用。例如,我嘗試使用.ajaxComplete()
在ajax停止時關閉它,以顯示並隱藏加載程序gif。但這隻適用於我的一個電話,這是標準$.ajax
呼叫。
我真的很困惑。
任何幫助都會很棒,請讓我澄清一下,如果我還沒有說清楚的話。
下面是我在說什麼小片段:
$.post("<?php echo base_url(); ?>connections/ajax_link", datax).done(function(resp,status) {
$("#loader_overlay").css('display','none');
display_confirmbox();
resp=JSON.parse(resp);
var str = resp['parent_selector'];
var arr = mystr.toString().split("||");
correct_classes(arr[1], resp);
$('#link_span').text('(' + window.link_counter + ') links found'); //this doesnt work unless its on top
});
更新
看來這個問題是由correct_classes()
引起的; 來自ajax調用的數組被傳遞給jQuery對某些東西抱怨的函數,並導致其餘的ajax代碼停止。然而correct_classes()
中的所有內容都會被執行。有問題的錯誤是這樣的:
TypeError: invalid 'in' operand e
具體是什麼原因造成的問題似乎是這樣的(我評論的一切了,這就是:
$.each(val, function(i, value) {
var mystr = value;
}
我真的無法弄清楚,爲什麼它
'on top'您的意思是作爲處理函數中的第一條指令嗎? – Samy
是的。首先要執行......我真的不知道適當的術語 – Ntikki
然後'display_confirmbox()'以任何方式干擾'$('#link_span')'(ajax call maybe?) – Samy