【问题标题】:Jquery catch JSON responsejQuery 捕获 JSON 响应
【发布时间】:2012-12-04 11:58:24
【问题描述】:

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

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

【问题讨论】:

  • 使用的缩进具有误导性。
  • 你的问题是什么?你期望它返回/做什么?
  • 我只想捕捉状态“错误”...在上面的代码中,我只想在获得一些数据时收到通知...
  • 你有没有得到任何东西,即它是否显示“正在检查..”等?
  • 是的 .. 确实如此 .. 但是 .. 永远不会“得到” ...

标签: jquery json


【解决方案1】:

引用documentation

如果 URL 包含字符串“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")
});

【讨论】:

  • 谢谢人...但是以下网址有效... [http://]192.168.0.14/openids/api/json/user/username/availability/check/?callback=?
【解决方案2】:

好的,所以跨域 ajax 安全问题是个麻烦。您的调用脚本和目标脚本应该在同一个域中,这样它就可以在不付出额外努力的情况下工作。如果您打开浏览器的错误控制台,您应该能够在那里看到安全异常。

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

检查这些答案:

How to enable cross-domain request on the server?

jQuery AJAX cross domain

【讨论】:

  • 是的 .. 你是对的 .. 我得到“XMLHttpRequest 无法加载 192.168.0.14/openids/api/json/user/username/availability/check/?username=hjmghj。来源 192.168.0.8 是Access-Control-Allow-Origin 不允许。”
【解决方案3】:

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

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

编辑 我没有注意到这从未到达处理程序,因为这是一个CORS 类型的请求。

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 2014-05-12
    • 1970-01-01
    • 2012-04-21
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多