JQuery AJAX 响应未定义

JQuery AJAX response undefined

本文关键字:未定义 响应 AJAX JQuery      更新时间:2023-09-26

我有一个奇怪的(可能不适合某些人)的问题,我有一个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);

只是为了澄清并确保我的漫谈被理解,在上面的例子中调用是未定义的吗?

你不能

这样做,因为 ajax 调用是异步的,
$.ajax 返回一个延迟对象,您可以使用它来获取所需的内容在这里阅读

ajax 调用本质上是async的,并且 dosent 返回任何内容。 所以当你做这样的事情时

var call = ajaxCall(someUrl, someParams);

然后将请求发送到服务器,下一行开始执行。 不将值放入调用变量中;

也像这样编码

.success(function(response) {
        return response;

不会做任何事情,因为 .success() 在响应成功时需要一个函数或回调来执行,所以如果你在其中返回一些东西并将 async 标志放在$.ajax() options中以true . 那么nothing/undefined也会被返回。