代码之家  ›  专栏  ›  技术社区  ›  Jeff

为什么jqueryajax请求失败了?

  •  2
  • Jeff  · 技术社区  · 14 年前

    这个 FCC 最近提供了一个小 set of API calls to access FCC data . 特别是,我对 Consumer Broadband Test API . 我正在尝试通过jQuery访问这个API,但是失败了。请让我知道,如果我做了一些错误的代码或如果这似乎是一个问题与FCC的API。

    如果在浏览器中访问此API请求,它将返回一个XML响应: http://data.fcc.gov/api/speedtest/find?latitude=30.240236062827297&longitude=-97.64787337499999

    因此,我尝试使用各种方法在jQuery中加载这些数据:

    var url = "http://data.fcc.gov/api/speedtest/find?latitude=30.240236062827297&longitude=-97.64787337499999";
    
    $.ajax({
        type: "GET",
        url: url,
        success: function(data) {
            console.log("ajax: " + data);
        }
    });
    
    $.getJSON(url, function(data) {
        console.log("getJSON: " + data);
    });
    
    $.get(url, function(data) {
        console.log("get: " + data);
    });
    

    console.log 消息包括:

    ajax: 
    getJSON: null
    get: 
    

    我做错什么了吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Ken Redler    14 年前

    要处理相同的源策略,需要使用JSONP。 It is supported 通过API。添加 callback=? 到您的 .getJSON() 电话:

    如果URL包含字符串 而是作为JSONP处理。看到了吗 $.ajax()获取更多详细信息。

    比如说:

    var url = "http://data.fcc.gov/api/speedtest/find?...&callback=?";
    $.getJSON(url, function(data) {
      // do stuff
    });
    

    参考文献: http://api.jquery.com/jQuery.getJSON/

        2
  •  3
  •   Calvin    14 年前

    不能使用AJAX进行跨域调用。不是这样的。

    您可能想做的是让AJAX查询URL成为您自己服务器上的本地脚本,然后让该脚本运行对API URL的请求(使用cURL或其他方法)。