我有一个奇怪的(可能不是为了某些我会下注)的问题,我有一个JavaScript方法来调用我的所有ajax调用,请参阅下面的内容。
function ajaxCall(url, params) {
if (params === null) {
$.ajax({
type: 'POST',
url: url,
contentType: 'application/json; charset=utf-8',
dataType: 'json'
}).success(function(response) {
return response;
}).error(function(response) {
return response;
});
} else {
var data = JSON.stringify(params);
$.ajax({
type: 'POST',
url: url,
data: data,
contentType: 'application/json; charset=utf-8',
dataType: 'json'
}).success(function(response) {
return response;
}).error(function(response) {
return response;
});
}
}
当我调用这个方法时,我从AJAX调用得到了相应的响应,所有看起来都很美好,直到我返回响应,返回的调用未定义?
为了完整性,我将包含我的通话代码。
var call = ajaxCall(someUrl, someParams);
只是为了澄清并确保我的ramblings被理解 call 在上面的例子中是不确定的?
答案 0 :(得分:1)
ajax调用本质上是async
并且剂量返回任何东西。所以当你做这样的事情时
var call = ajaxCall(someUrl, someParams);
然后将请求发送到服务器并开始执行下一行。不将值放在调用变量中;
也像这样的代码
.success(function(response) {
return response;
什么都不做,因为.success()在响应成功时接受一个函数或者一个回调来执行,所以如果你在这里返回一些内容并将async
标记放在$.ajax()
{{ 1}}到options
。然后还会返回true
。
答案 1 :(得分:1)
你不能这样做,因为ajax调用是async,
$ .ajax返回一个Deferred Object,你可以使用它来获得你需要的东西
read on it here