我正在做一個ajax調用返回成功的API,但是有一個輕微的問題,被設置爲undefined的變量,我不明白爲什麼。我選擇一個<i>
元素並將其存儲在變量中以將其顯示爲加載欄,然後我嘗試在成功回調中再次隱藏它。如何通過jQuery將定義的變量設置爲未定義的ajax調用?
該元素已成功存儲並用於在ajax調用之前顯示加載欄,但它給出了一個錯誤,說明它在成功回調中未定義。我很困惑可能會導致問題的原因。在線找不到任何其他解決方案。請參閱下面的代碼。
奇怪的是我有一個<ul>
元素在<i>
元素之後聲明,它永遠不會被設置爲undefined。
$("li.country").on("click", function(){
var i = $(this).find("i"); //this is where the element is stored
var cc = $(this).attr("data-city") + $(this).attr("data-country-code");
var ul_week = $("#week");
i.toggleClass("no_show"); //works fine here, shows the element
$.ajax({
url: forecast_base_url + cc + units + APPID,
success: function(result){
i.toggleClass("no_show"); //gives an error here
$("#cc_city").html("This forecast for " + result.city.name + ".");
ul_week.html("");
for (var i = 0; i < result.list.length; i++) {
ul_week.append(
"<li>Hello World"+ i +"</li>"
);
}
console.log(result);
},
error: function(err){
console.log(err);
}
});
});
這是不相關的,並且原則上,將工作,但是你正在使用變量'i'來做兩件事情:作爲jQuery變量,也作爲一個循環變量。正如我所說,它會起作用,但如果您使用不同的變量名稱,長期來看它會更好。特別是,我發現給jQuery變量比如'$'前綴是很有用的,以便讓代碼的其餘部分清楚它是什麼類型的數據。解決你的問題,我認爲這個問題可能是一個範圍。我想我已經擁有了。在下面檢查我的答案。 – Manngo
Cam在下面正確回答了問題。我將繼續提出關於編碼慣例的建議。 「i」變量也由Ajax函數使用。感謝您的輸入:)。 – Courtney