我有一个名为items的变量。 如果我在getjson函数中访问它的值,我得到正确的值。 但如果我在getJSON函数之外访问它的值,我会得到字符串空值。 我需要你的帮助来了解什么是问题。 谢谢你的帮助!提前
http://xxxx/mjpg/video.mjpg
答案 0 :(得分:1)
当你显示getJSON变量之外的项的值时,它是正常的,因为它在$ .getJSON方法的成功回调时获取其值,换句话说,你想在初始化时以同步模式显示它并取其值在异步模式下,你可以通过使用.done()来解决这个问题,你的代码将变成如下:
$("#CityId").click(function () {
var htmlText = "<ul class=ulList>";
var mainDiv = $('.divCounties');
var items = "";
for (var i = 0; i < arrCity.length; i++) {
htmlText += "<li class=ilceCaption>" + arrCity[i].text; // +"</li>";
htmlText += "<ul>";
$.getJSON("../Adds/GetCounties", { cityId: arrCity[i].value },
function (data) {
$.each(data, function (i, state) {
items += state.Text;
//htmlText += "<li>" + state.Text + "</li>";
});
console.log(items); **// ==> is getting correct value in this line**
}).done(function() {
console.log( "second success" );
console.log(items);
});
htmlText += "</ul>";
htmlText += "</li>";
}
htmlText += "</ul>";
console.log(htmlText);
mainDiv.html(htmlText);
答案 1 :(得分:0)
您应该使用承诺和完成功能:
$("#CityId").on('click',function(e){
e.preventDefault();
var htmlText = "<ul class=ulList>";
var mainDiv = $('.divCounties');
var items = "";
for (var i = 0; i < arrCity.length; i++) {
htmlText += "<li class=ilceCaption>" + arrCity[i].text; // +"</li>";
htmlText += "<ul>";
$.getJSON("../Adds/GetCounties", {cityId: arrCity[i].value }, function(data){
$.each(data, function(i, state) {
items += state.Text;
//htmlText += "<li>" + state.Text + "</li>";
}).promise().done(function(){
console.log(items);
})
});
htmlText += "</ul>";
htmlText += "</li>";
console.log(items);
}
htmlText += "</ul>";
console.log(htmlText);
mainDiv.html(htmlText);
});