$ .get()加载两次

Bah*_*eng 2 jquery

我似乎陷入了死胡同.

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

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

alert(prodList);
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

Nop*_*ope 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
Run Code Online (Sandbox Code Playgroud)

如果你想对你做一些事情prodList要么在回调函数本身内使用它,要么从回调函数调用另一个函数,prodList作为参数传递以在那里处理它.