我正在向服务器发一个简单的JSON帖子,我只检索布尔值。问题是这个json调用是在另一个需要返回该布尔值的函数内部。
我这里有两个解决方案
以某种方式从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;
}
}
等待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;
答案 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
}