没有响应数据时,jQuery AJAX调用不会退出

时间:2014-03-24 12:31:04

标签: jquery ajax

我有以下jQuery代码:

$.ajax({
        url: application.common.relativePath + '/persons/search/',
        contentType: "application/json",
        dataType: 'json',
        // parameters name-value pairs to be passed
        data: {
            forename: forename,
            surname: surname,
            checkEmployee: false
        },
        success: function(data) {
            // no response data
            if (!data) {
                return; // THIS IS THE PROBLEM.
            }

            // code executed if there is a response.
        }
 });

当没有响应数据时,AJAX函数应退出,因此使用return语句。但是,我发现即使没有响应数据(data为null),下面的代码也会被执行,这意味着没有调用return语句来突破jQuery AJAX调用。

如果没有数据响应,任何人都可以帮我打破AJAX调用。

3 个答案:

答案 0 :(得分:2)

以Success结尾的Ajax调用将始终返回数据。如果服务器没有要返回的数据,它将返回一个数据类型的空对象(在本例中为Json)。你必须检查Json对象是否包含数据。

答案 1 :(得分:1)

我的建议是,始终从您的服务返回响应标志,如

在您的控制器(PHP)中,

$res = array(
    "status" => true,
    "data" => "Successfuly saved"
);
echo json_encode($res);

在你的js中,检查;

success: function(data) {
    // no response data
    if (data.status == true) {
        // success
    } else {
        // error
    }
}

如果您不使用某种状态,可以查看;

success: function(data) {
    if (data.length > 0) {
        // success
    } else {
        // error
    }
}

答案 2 :(得分:0)

如您所知,如果请求(不是与返回数据相关的任何内容)成功,则会调用AJAX调用中的success方法。

该函数传递三个参数:

  • 从服务器返回的数据,根据dataType参数格式化;

  • 描述状态的字符串;

  • 和jqXHR(在jQuery 1.4.x中,XMLHttpRequest)

看来,即使服务器是空字符串,您的服务器也会返回数据,或者只返回空格(ASCII代码32)。但是,如果是这种情况,那么if (!data)将不会是false。尝试不同的隔间和/或使用success方法的所有3个参数来查看它们内部的内容。