jQuery $ .getJSON无效

时间:2011-06-06 14:52:01

标签: javascript jquery cross-domain

我尝试从一台服务器获取一个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部分时(如代码所示),alert框显示正确的URL但没有执行get请求(从FireBug监视获取请求)。
  2. 当硬编码数据为“http://www.google.com”时,正在执行get请求但没有响应,尽管响应标头出现且响应代码为200(但它是在萤火虫中标记为红色(不知道为什么:()
  3. 当我尝试在localhost域中获取网页主机时,虽然响应不是JSON,但是它被正确获取。
  4. 我有以下疑惑

    1. 如果getJSON函数只接受JSON对象作为响应,那么为什么在执行3以上时没有错误。
    2. 什么是正确的代码来执行我所需的功能。
    3. 对每种情况发生的事情的建议
    4. 提前感谢您的答案:)

2 个答案:

答案 0 :(得分:5)

getJSON功能只能跨域使用才能获取JSONP 它并没有神奇地逃避任何安全限制。

答案 1 :(得分:0)

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' }
    });