2

我似乎陷入了死胡同。

我尝试使用 jQuery 加载数据,.get()但在调试时,它显示该函数执行了两次,因此 from 的值prodList丢失了。

$.get(url, function (model) {
    prodList = $.parseJSON(model);
    alert(prodList);
});

alert(prodList);

首先alert(),它显示从服务器返回的数据。但在第二个alert()它显示空字符串。

我究竟做错了什么?

4

2 回答 2

5

您显示的代码并未表明执行有任何问题。

关于值的警报。

$.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作为参数传递以在那里处理它。

于 2013-04-06T07:43:32.473 回答
0

你得到空值,因为:

prodlist在 get 之后使用,不是

 async: false

基本上你需要确保你第一次使用的值总是发生在第二次调用之前。

所以尽量不要使用速记函数。

你可以使用这个,很多人避免使用 Sync Ajax,但根据情况可能会有一些例外:

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType,
  async: false
});
于 2013-04-06T07:42:36.017 回答