JQuery AJAX响应未定义

时间:2012-05-01 08:56:49

标签: javascript jquery method-call

我有一个奇怪的(可能不是为了某些我会下注)的问题,我有一个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 在上面的例子中是不确定的?

2 个答案:

答案 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