从$ .postJSON获取价值或等待它完成

时间:2012-08-29 18:09:44

标签: jquery json post

我正在向服务器发一个简单的JSON帖子,我只检索布尔值。问题是这个json调用是在另一个需要返回该布尔值的函数内部。

我这里有两个解决方案

  1. 以某种方式从JSON返回函数返回数据然后再从包装函数返回它(我这里的代码不起作用,我无法弄清楚如何从“function(){}返回数据在$ .postJSON里面:

        function testZipCode(zipcode, state) {
        var s;
        $.postJSON("/Cart/ZipTest",
            {
                state: state,
                zipCode: zipcode
            }, function (data) {
                if (!data.ok) {
                    s = false;
                }
                s = true;
            });
            return s;
    }
    

    }

  2. 等待POST结束然后返回结果:(我得到的错误是我在POST完成之前调用return,因此responseText为null。有人可以帮忙吗?

     var result = $.postJSON("/Cart/ZipTest",
     {
                state: state,
                zipCode: zipcode
            }, function (data) {
                if (!data.ok) {
                    //do something
                }
            });
            return $.parseJSON(result.responseText).ok;
    

2 个答案:

答案 0 :(得分:2)

将ajax调用作为延迟对象返回,并在回调函数中执行某些操作:

function someOtherFunction() {
    testZipCode('90102', 'FL').done(function(data) {
        if (!data.ok) something = false;
    });

}

function testZipCode(zipcode, state) {
    return $.getJSON("/Cart/ZipTest", {state: state, zipCode: zipcode} );
}​

答案 1 :(得分:0)

做这样的事情..

 {
            state: state,
            zipCode: zipcode
        }, function (data, count) {
            if (!data.ok) {
               getTheData(data); //do something
            }
        });


           return $.parseJSON(result.responseText).ok;

         function getTheData(data)
{
//do things with data here
}