我真的不知道以下代码有什么问题。我没有在状态中得到任何回应......
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js">
</script>
<input type="text" name="UserName" id="UserName" />
<div id="divStatus"></div>
<script type="text/javascript">
$("#UserName").keyup(function() {
var name = $("#UserName").val();
var status = $("#divStatus");
var user = $.trim(name);
if (user.length > 3) {
status.html("Checking....")
$.getJSON("http://192.168.0.14/openids/api/json/user/username/availability/check/", {
username: name,
}, function(data) {
status.html("got")
});
} else {
status.html("Min 3 letters ");
}
});
</script>
json响应如下:
{"status": "Error", "message": "A user with this username already exists."}
答案 0 :(得分:3)
如果网址包含字符串“callback =?” (或类似的,由...定义) 在服务器端API),请求被视为JSONP。见 讨论$ .ajax()中的jsonp数据类型以获取更多详细信息。
由于您正在发出跨域请求,因此您可能希望使用JSONP。为此,请在查询字符串末尾添加callback
参数:
$.getJSON("http://192.168.0.14/openids/api/json/user/username/availability/check/?callback=", {
username: name,
}, function(data) {
status.html("got")
});
答案 1 :(得分:1)
好的,所以跨域ajax安全问题就是麻烦。您的调用脚本和目标脚本应位于同一个域中,以便它无需额外工作即可运行。如果您打开浏览器的错误控制台,您应该能够在那里看到安全例外。
除非您明确将其设置为支持来自其他主机的请求。
检查这些答案:
答案 2 :(得分:1)
我认为您遇到的是调用返回错误状态,但.getJSON api只为您提供成功处理程序的选项。
您需要做的是查看.ajax API,它允许您添加错误处理程序。 .getJSON API显示了它的简写。查看.ajax API,了解您可以传递的所有选项。
修改强> 我没有注意到这从未进入过处理程序,因为这是CORS类型请求。