【问题标题】:jQuery $.getJSON not workingjQuery $.getJSON 不工作
【发布时间】:2011-06-06 14:52:00
【问题描述】:

我尝试从一台服务器获取 URL,并使用该 URL 获取另一台服务器的内容。

$.ajax({url : 'http://localhost:8080/geturl.jsp?A=1&B=2,C=3',
    success : function (data)
        {
            alert(data);
            $.getJSON(data, function (mydata)
            {
                alert(mydata);
            });
        },
    error : function (data, status, xhr)
            {
            }
    });

我知道我们无法通过ajax调用进行跨域请求,这就是我使用getJSON的原因,我有以下问题

  1. 当我简单地将数据传递到 getJSON 的 url 部分(如代码所示)时,警报框会显示正确的 URL,但没有执行 get 请求(从 FireBug 监控 get 请求)。
  2. 当将数据硬编码为“http://www.google.com”时,正在执行获取请求但没有响应,尽管响应标头出现并且响应代码为 200(但它是在 Firebug 中标记为 RED(不知道为什么:()
  3. 当我尝试在 localhost 域中获取网页主机时,尽管响应不是 JSON,但它被正确获取。

我有以下疑惑

  1. 如果 getJSON 函数只接受 JSON 对象作为响应,那么为什么执行上述 3 时没有出现错误。
  2. 执行所需功能的正确代码是什么。
  3. 对每种情况的建议

提前感谢您的回答:)

【问题讨论】:

    标签: javascript jquery cross-domain


    【解决方案1】:

    getJSON 函数只能跨域使用以获取JSONP
    它不会神奇地规避任何安全限制。

    【讨论】:

    • 有什么方法可以从其他域获取 XML 格式的数据
    • @nikku:您可以在您的域上使用代理。
    【解决方案2】:

    http://api.jquery.com/jQuery.ajax/

    这应该是 jsonp 的工作示例:

        var request = jQuery.ajax(
        {
            url: "http://Your url",
            success: function (data) { console.log('success!'); console.log(data); },
            error: function (data) { console.log('error!'); console.log(data); },
            dataType: "jsonp",
            type: "GET",
            data: { key: 'value' }
        });
    

    【讨论】:

      猜你喜欢
      • 2012-01-04
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多