[英]AJAX callback function intermittently fails to add GET parameter
我有一個<ul>
,每個<li>
的ID都類似於<li id='entry24'>
。 單擊一個后,我需要通過將獲取請求發送到/query/getEntry/id=24
來向服務器查詢該條目信息。
使用此代碼:
for(var entry = 0; entry < entryIds.length; entry++) {
$("#entry" + entryIds[entry]).click(function() {
$.get(
"/query/getEntry",
{id: entryIds[entry]},
getEntryCallback,
"html"
)
});
}
我發現每個請求都發送相同的ID-最后一個條目的ID。 經過研究,我將代碼修改為:
for(var entry = 0; entry < entryIds.length; entry++) {
var entryId = entryIds[entry];
$("#entry" + entryId).click(function(event) {
$.get(
"/query/getEntry",
{id: event.target.id.replace("entry", "")},
getEntryCallback,
"html"
)
});
}
效果更好(每個<li>
發送正確的ID)。 但是,在Firebug控制台上,我可以看到每次單擊都發出了請求,但是大約有75%的時間它們以紅色顯示/query/getEntry/id=
。得到我期望的結果。
我可以確認每個<li>
都具有適當的id
字段。
任何幫助/建議非常感謝!
嘗試這個,
$('ul li').click(function(){
entryid = $(this).attr('title');
$.get(
"/query/getEntry",
{id: entryid.replace("entry", "")},
getEntryCallback,
"html"
)
});
對於您的html,在<ul>
所有<li>
的title屬性中定義條目ID。
如果沒有錯,這應該起作用,因為僅當單擊<li>
並且title屬性對於每個<li>
是唯一的時才調用AJAX函數,從而導致每次都有唯一的id。
這是最好的解決方案,請注意以下幾點:
$("li[id^='entry']").on("click",function() {
var id = $(this).attr("id").substring(5);
$.get(
"/query/getEntry",
{id: id},
getEntryCallback,
"html"
);
});
我不確定您為什么在<li>
遇到這個問題。 但是,請嘗試這樣做:
for(var entry = 0; entry < entryIds.length; entry++) {
var entryId = entryIds[entry];
$("#entry" + entryId).click(function(event) {
$.get(
"/query/getEntry",
{id: entryId},
getEntryCallback,
"html"
)
});
}
在定義onclick處理程序時,這應該在entryId
變量周圍形成一個閉包,以便為每個條目保留正確的ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.