无法获得json响应

时间:2012-03-20 06:40:08

标签: jquery ajax json jsonp

    var myurl="https://raw.github.com/currencybot/open-exchange-rates/master/latest.json";

    $.ajax(
    {
     url:myurl,
     type:"POST",
     dataType:"JSONP",
     success:function(myObj)
       {
        console.log(myObj);  
       }
   });

我尝试使用速记getJSON,但是控制台抛出了一个错误“使用POST请求”。 使用上面的代码,控制台声明“无效标签”。

3 个答案:

答案 0 :(得分:1)

使用$.getJSON(),它是速记功能,也非常有效。

var myurl="https://raw.github.com/currencybot/open-exchange-rates/master/latest.json";

$.getJSON(
  myurl,
  function(data) {
      //manipulate your json
});

但是对于JSONP请求,您应该在URL中有回调参数

引用文档 [here]

  

如果网址包含字符串“callback =?” (或类似的,由服务器端API定义),请求被视为JSONP。

答案 1 :(得分:0)

您应该更改代码,试试这个:

$.post(
  myurl,
  {},
  function(data){
    alert(data);
  },'json'
);

变量'data'是一个json对象。

答案 2 :(得分:0)

跨域JSONP根本不是AJAX。它不使用XMLHttpRequest。它只不过是一个加载JavaScript代码的动态脚本元素。

尝试:


var req = $.ajax({
    url : myurl,
    dataType : "jsonp"
});

req.success(function(myObj) {
    console.log(myObj);
});

req.error(function() {
    console.log('some error occured');
});

我认为终端服务器“https://raw.github.com”不支持JSONP。因此,您可能必须在服务器上创建代理端点才能访问此数据。基本上,在您自己的服务器上创建一个端点,使用任何有意义的方法(curl等)加载该数据并按原样返回它。然后你可以使用常规的AJAX。希望有所帮助