开发者问题收集

解析跨域 JSON,出现错误时

2016-03-14
476

我正在使用 $.getJSON 从远程服务器获取一些数据。请注意,我无法控制 JSON 的格式或返回方式。我正在使用此代码:

$(function(){
    var API = "https://ratesjson.fxcm.com/DataDisplayer?jsoncallback=?";
    $.getJSON(API, function(json) {
        var Symbol = json.results[0].Symbol;
        console.log('Symbol : ' + Symbol);
    });
});

我在控制台中收到此错误:

Uncaught TypeError: null is not a function

我查看了 JSON,我可以看到在对象之前有一个包含 Null 的字符串。有什么办法可以解决这个问题?您可以在此处查看 JSON 及其错误: https://ratesjson.fxcm.com/DataDisplayer

2个回答

您调用的 API 返回的是 JSONP,而不是 JSON,因此最好使用 $.ajax 并提供相关参数。试试这个:

var API = "https://ratesjson.fxcm.com/DataDisplayer";
$.ajax({
    url: API,
    dataType: 'jsonp',
    crossDomain: true,
    success: function(json) {
        console.log(json);
    }
});

工作示例

Rory McCrossan
2016-03-14

尝试使用 $.ajax() 而不是 $.get()。它让您完全控制您的 ajax 请求。 参见以下示例。

var request = $.ajax({
  url: "https://ratesjson.fxcm.com/DataDisplayer?jsoncallback=?",
  method: "POST",
  data: { id : '1' },
  dataType: "html"
});

request.done(function( msg ) {
  $( "#log" ).html( msg );
});

request.fail(function( jqXHR, textStatus ) {
  alert( "Request failed: " + textStatus );
});

更多详情: [Jquery 教程] http://api.jquery.com/jQuery.ajax/

sachin k
2016-03-14