【问题标题】:Cannot get info from error when trying to get JSON data via JQuery,尝试通过 JQuery 获取 JSON 数据时无法从错误中获取信息,
【发布时间】:2011-09-24 00:29:41
【问题描述】:

对于我的一生,我无法弄清楚为什么我在使用下面的预兆发出 AJAX 请求时不断收到错误消息。页面加载时,弹出的alerts绝对没有关于请求失败原因的有用信息,firebug中的响应码为200,readyState,弹出时status均为0,responseText为空。我可以使用浏览器访问请求就好了。我只是去错误回调函数:

<script src="/static/js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {

    function loadData(url, container) {
        var data =[];

        $.ajax({
            url: url,
            dataType: 'json',
            data: data,
            success: function(data) {
                var obj = jQuery.parseJSON(data,container);
                alert(container);   
            },
            error: function(xhr,err) {
                alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
                alert("responseText: "+xhr.responseText);

            }
        });
    };

    loadData( 'http://api.giantbomb.com/genres/?api_key=####&format=json', '#genres-pane');

});


</script>

提前谢谢你

【问题讨论】:

  • 你是什么意思“得到一个错误”?
  • 正如我上面所说,尽管有 200 个响应代码,但 ajax 代码会转到错误回调

标签: jquery ajax json api


【解决方案1】:

您似乎正在尝试以 JSON 格式执行跨域请求,这意味着在后端使用 XmlHttpRequest。由于same origin policy,这是不允许的。尝试将您的数据类型更改为“jsonp”。您还需要将 url 的 format 参数从“json”更改为“jsonp”。

【讨论】:

  • 使用 $.getJSON 而不是 $.ajax 因为它似乎更优雅地处理 jsonp 请求。谢谢!
【解决方案2】:

firefox 的 FireBug 将向您显示所有请求、帖子、响应等。对于此类内容非常有用。

【讨论】:

  • 是的,由于某种原因,在 Firebug 中,我在请求中收到 200 响应代码,但在 jquery ajax 请求期间,错误回调被抛出。
猜你喜欢
  • 2019-09-03
  • 2023-03-22
  • 1970-01-01
  • 2022-09-24
  • 2014-04-11
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多