标题可能有点奇怪,但我会尽力解释。
我执行 API 调用来验证一些数据。为此,我使用以下函数:
function validateAddress(address) {
var validationURL = "/api/validateAddress/"+address;
$.getJSON(validationURL, function(data, textStatus, jqXHR){
if (textStatus === "success") {
return data.isValid
}
}));
}
// And then in other parts of the code I want to do something like:
if (validateAddress(address)) {
// do something awesome right here..
}
问题当然是它是一个异步调用,这会导致 validateAddress() 不返回任何内容,因为它在 API 调用返回任何结果之前结束。
那么我怎样才能真正让 validateAddress() 返回 api 调用的结果呢?欢迎所有提示!
最佳答案
你有几个选择:
- 您可以将参数传递给 jQuery ajax 函数以使调用同步(但您不能使用
getJSON
,您需要直接使用$.ajax
并传递它async: false
) - 您可以将回调作为第二个参数传递到
validateAddress
函数中,请求完成时将调用该函数 - 您可以从函数 validateAddress 返回
$.getJSON
调用的返回值,因为它是一个 promise ,您可以使用.done() 将您的代码附加到它
(示例如下 http://api.jquery.com/jQuery.getJSON/#jqxhr-object )
关于javascript - 如何从包装函数返回 javascript ajax 调用的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25506467/