出现错误时解析跨域JSON

时间:2016-03-14 19:52:45

标签: jquery json

我正在使用$.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);
    });
});

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

  

未捕获的TypeError:null不是函数

我已经看了JSON,我可以看到在对象之前有包含Null的字符串。有什么方法吗?您可以在此处查看JSON及其错误:https://ratesjson.fxcm.com/DataDisplayer

2 个答案:

答案 0 :(得分:1)

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

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

Working example

答案 1 :(得分:0)

尝试在$ .get()上使用$ .ajax()。它使您可以完全控制您的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/