1

谁能向我解释为什么会发生以下情况。首先看我下面的代码。尝试通过 JSON 请求获取数据并将其保存以备后用。

        var entities;

        //@jsonGetEntities is an url build by asp.net MVC and this works
        $.getJSON("@jsonGetEntities", function(getdata) {
            entities = getdata;

            //I would expect that this is the first alert
            alert(entities + "first");
        });            

        //I would expect that this is the second alert
        alert(entities + "second");

但是,我希望首先出现的警报排在第二位,并且entities实际上已被填充。

在最后一个警报entities没有填写。

我似乎无法理解为什么我的 json 没有保存到 var 以及为什么稍后调用的警报会更早执行?您能否也给我一个可能的其他解决方案?

4

2 回答 2

3

那是因为getJSON()异步的。

一个警报在 getJSON 的成功回调中,一旦服务器返回,它就会异步执行。

然而,第二个警报在触发 AJAX 请求后立即运行(通过getJSON()

于 2013-05-22T13:06:18.993 回答
0
 $.getJSON("@jsonGetEntities", function(getdata) {
            entities = getdata;

            //I would expect that this is the first alert
            alert(entities + "first");
            setTimeout(function() {
               //I would expect that this is the second alert
               alert(entities + "second");
            },2000); // wait 2 sec.
        });            
于 2013-05-22T13:09:16.320 回答