我在这里读过许多其他帖子,说明同样的问题,结果证明是无效的json。
然而,这不是我的问题,我从相同的症状中躲避,但据我所知,json是有效的:
好吧,这是我的代码:function CheckEmail(email) {
$.ajax({
type: "GET",
url: "<%=_baseUrl%>/CheckEmail.ashx?email=" + email,
dataType: "json",
success: function (response) {
var json = response;
if (json.emailExists == "true") {
emailValid = false;
$('#emailError').html('Email address already exists in our system, please try a different address');
}
else {
emailValid = true;
$('#emailError').html('');
}
},
error: function (response, ajaxOptions, thrownError) {
emailValid = false;
}
});
}
我总是遇到错误事件。
这是来自ashx处理程序的响应(通过fiddler看到):
HTTP/1.1 200 OK
Date: Fri, 22 Jul 2011 08:22:39 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 23
{"emailExists":"false"}
有人可以说明为什么会失败吗?
thrownError =“” ajaxOptions =“错误” 和response中的errorText =“错误”
答案 0 :(得分:2)
这可能是 - jquery ajax has a problem getting return value from ashx handler - 可能的答案吗?似乎和你有同样的问题!
修改强> 我也很好奇它背后的原因。如果它是异步ajax调用(http://roshanbh.com.np/2008/01/how-to-return-value-from-ajax-function-use-synchronous-request.html),则可能返回null,默认情况下jQuery ajax。但如果它是相对路径,你的工作正常。也许这是绝对路径导致跨域调用的问题,并且由于某种原因忽略了返回值?你能尝试使用绝对路径并强制同步ajax调用吗?
答案 1 :(得分:1)
我不知道你为什么会收到这个错误,但我注意到你的代码中应该改变两件事(但我不认为它们是错误的原因)。
此:
url: "<%=_baseUrl%>/CheckEmail.ashx?email=" + email,
应该是:
url: "<%=_baseUrl%>/CheckEmail.ashx",
data: { email: email }
而且:
{"emailExists":"false"}
可能更好:
{"emailExists":false}
所以你在javascript中得到一个实际的假值,而不是字符串。