我似乎陷入了死胡同。
我尝试使用 jQuery 加载数据,.get()但在调试时,它显示该函数执行了两次,因此 from 的值prodList丢失了。
$.get(url, function (model) {
prodList = $.parseJSON(model);
alert(prodList);
});
alert(prodList);
首先alert(),它显示从服务器返回的数据。但在第二个alert()它显示空字符串。
我究竟做错了什么?
我似乎陷入了死胡同。
我尝试使用 jQuery 加载数据,.get()但在调试时,它显示该函数执行了两次,因此 from 的值prodList丢失了。
$.get(url, function (model) {
prodList = $.parseJSON(model);
alert(prodList);
});
alert(prodList);
首先alert(),它显示从服务器返回的数据。但在第二个alert()它显示空字符串。
我究竟做错了什么?
您显示的代码并未表明执行有任何问题。
关于值的警报。
$.get()是异步执行,这意味着代码.get()在启动后继续执行。
您指定的回调函数在完成之前不会执行,.get()但其余代码会一直持续到那时。
因此,第一个警报会在执行回调之前向您显示值,因此prodList尚未填充。
然后在回调函数中填充值后显示第二个警报。
$.get(url, function (model) {
prodList = $.parseJSON(model);
alert(prodList); // prodList is now populated
});
alert(prodList); // prodList here is alerted before it is populated
如果你想对你做一些事情,prodList要么在回调函数本身中使用它,要么从回调函数调用另一个函数,prodList作为参数传递以在那里处理它。
你得到空值,因为:
prodlist在 get 之后使用,不是
async: false
基本上你需要确保你第一次使用的值总是发生在第二次调用之前。
所以尽量不要使用速记函数。
你可以使用这个,很多人避免使用 Sync Ajax,但根据情况可能会有一些例外:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType,
async: false
});