Jquery捕获JSON响应

时间:2012-12-17 11:31:00

标签: jquery json

我真的不知道以下代码有什么问题。我没有在状态中得到任何回应......

<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."}

3 个答案:

答案 0 :(得分:3)

引用documentation

  

如果网址包含字符串“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安全问题就是麻烦。您的调用脚本和目标脚本应位于同一个域中,以便它无需额外工作即可运行。如果您打开浏览器的错误控制台,您应该能够在那里看到安全例外。

除非您明确将其设置为支持来自其他主机的请求。

检查这些答案:

How to enable cross-domain request on the server?

jQuery AJAX cross domain

答案 2 :(得分:1)

我认为您遇到的是调用返回错误状态,但.getJSON api只为您提供成功处理程序的选项。

您需要做的是查看.ajax API,它允许您添加错误处理程序。 .getJSON API显示了它的简写。查看.ajax API,了解您可以传递的所有选项。

修改 我没有注意到这从未进入过处理程序,因为这是CORS类型请求。