我有以下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调用。
答案 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个参数来查看它们内部的内容。