我有問題將參數/變量傳遞到ajax()函數。jQuery將參數傳遞到.ajax()
下面的函數接受兩個參數。其中一個是'元素',即.ajax()使用的成功選項,工作正常,因此無需專注於此。 'tx'或者是像'menu'這樣的單個值,或者是由冒號分隔的一對值:「menu:categories:brands」
如果'tx'中只有一個值,那麼只有一個AJAX請求需要發送,並且工作正常。如果'tx'中有多個值,則函數split將使用「:」作爲分隔符,然後將offset [0]作爲'tx'的值傳遞給AJAX請求,然後將其餘值存儲在' X'。
我遇到的問題是一旦AJAX請求完成第一個值,遞歸運行此函數。 var'more'存儲一個bool值,如果還有更多值需要處理的話。但是,當我使用'more == true'寫入.ajax()的success或complete選項時,它不會反映存儲在該變量中的值,它總是返回false。
在回答一些問題之前,「你應該構造調用這個函數的函數,只傳遞一個值到這個參數中」,讓我們假設這是一個不可能的事情,超出了我的控制範圍。
我不知道爲什麼會發生這種情況。我知道這可能非常簡單,我可以忽略,但我現在已經上了大約16個小時,這個問題至少困擾了我至少一半。
這裏的任何幫助表示讚賞。這裏是功能:
function getContent(element, tx) {
e = element
modAmount = tx.split(':')
if (modAmount.length > 1) {
x = ''
tx = modAmount[0]
for (i=1;i<modAmount.length;i++) {
x = x + modAmount[i]
if (i != (modAmount.length)-1){
x = x+":"
}
}
more = true
}
else {
more = false
tx = modAmount[0]
}
$.ajax({
type: "POST",
url: "getModule.php",
data: "modName="+tx+"&DB=<?php echo DB ?>",
success: function(data){
if ($(element).find('p').text() == "No Content"){
$(element).find('p').remove();
$(element).html("<div onclick='destroy(this)' id='destroy' class='ui-corner-all destroy' title='Remove Module'>"+data+"</div>")
}
else {
$(element).append("<div onclick='destroy(this)' id='destroy' class='ui-corner-all destroy' title='Remove Module'>"+data+"</div>");
}
},
complete: function() {
if (more == true) {alert(x)} // always returns false
}
});
}
感謝您的幫助。我完全忽略了可變範圍太長了。不幸的是,解決這個問題揭示了一個非常棘手的錯誤,導致無限循環。我只是要轉儲這一小段代碼,並只用一個AJAX/JSON請求重寫它。 – 2011-01-23 03:39:24