jQuery AJAX返回200 OK状态,但错误。 我如何查看错误的细节?
我有以下jQuery:
var fn = {
Load: function () {
$(".myclass input.Submit").click(function (e) {
var _IsValid = fn.IsValid();
if (_IsValid == false) {
e.preventDefault();
}
//Popup displays message fine if "return false;" is
//called here but then obviously never posts back.
});
}
, IsValid: function () {
var _IsValid = true;
$.ajax({
url: "/myURL"
, type: 'POST'
, contentType: 'application/json; charset=utf-8'
, data: JSON.stringify({ Barcode: $barcode.val(), Email: $email.val() })
, dataType: 'json'
, success: function (data) {
var array = eval(data);
if (array[0] == 0) {
_IsValid = false;
ShowPopup(array[1]);
}
}
, error: function (xhr, status, error) {
}
});
return _IsValid;
}
}
AJAX响应是200 OK
,但success
函数没有运行。 相反,它似乎在运行error
功能。
该脚本正在作为ASP.NET ImageButton的单击事件侦听器运行。 如果_IsValid==false
,则调用e.preventDefault()
以防止回发。
奇怪的是,如果我将事件侦听器函数的末尾添加为false,则此代码将运行success
函数。
我怎样才能找出是什么导致这个错误,以便我可以解决它?
我认为你目前遇到的问题是你的IsValid
函数总是返回true。 这是因为在函数返回之前,AJAX文章没有时间完成。 毕竟这是一个异步功能。
从我可以告诉你想要一个有效的AJAX请求表单,如果有效提交表单,否则显示一个弹出。 如果这是正确的,你应该做一些像......
$(".myclass input.Submit").click(function (e) {
e.preventDefault();
ProcessForm();
});
function ProcessForm(){
$.ajax({
url: "/myURL"
, type: 'POST'
, contentType: 'application/json; charset=utf-8'
, data: JSON.stringify({ Barcode: $barcode.val(), Email: $email.val() })
, dataType: 'json'
, success: function (data) {
var array = eval(data);
if (array[0] == 0) {
ShowPopup(array[1]);
}
else//VALID
{
document.forms[0].submit();
//OR IF YOU HAVE MULTIPLE FORMS SPECIFY AN ID...
document.getElementById("FormElement").submit();
}
}
, error: function (xhr, status, error) {
}
});
}
我怎样才能找出是什么导致这个错误,以便我可以解决它?
您可以在您的浏览器中使用JavaScript调试工具,例如FireFox中的FireBug,这将允许您查看AJAX请求和响应。 您将看到通过电线发送的确切内容以及任何可能的错误。
其实看这个:
dataType: 'json;'
你可能意思是:
dataType: 'json'
当你像这样显式设置响应内容类型时,你应该确保服务器发送有效的JSON,因为jQuery将尝试解析响应,如果失败,你将得到一个异常。
我也完全替代:
data: '{"Barcode":"' + $barcode.val() + '", "Email":"' + $email.val() + '"}'
有:
data: JSON.stringify({ Barcode: $barcode.val(), Email: $email.val() })
不要像构建JSON时那样使用字符串连接。
链接地址: http://www.djcxy.com/p/58421.html上一篇: jQuery AJAX returns 200 OK status, but errors. How can I view details of error?