Internet Explorer上的JSON解析错误

Joh*_*uke 2 javascript internet-explorer parsing json

我正在使用jscript从Flickr中检索JSON数据.在除IE之外的每个浏览器中100%工作.
我正在使用jquery为IE调用此特定函数的每个函数:

//some code
if ($.browser.msie && window.XDomainRequest) {    
  var xdr;  
  var url = "http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=" + apiKey + "&photoset_id=" + set + "&extras=url_sq&format=json&nojsoncallback=1";  
  xdr = new XDomainRequest();
  if (xdr) {  
    xdr.open("get", url);  
    xdr.send();   
    var data = JSON.parse(xdr.responseText);
    //some jquery stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

在IE中,函数返回var data = JSON.parse(xdr.responseText)中的语法错误; 但错误是随机的,它会在显示错误之前检索随机数量的照片.

我检查了所有涉及的变量,一切都恢复正常.

我正在使用json2.js

更新:

JSON可能的结果:

{
    "photoset": {
        "id": "72157627083924637",
        "primary": "5943107169",
        "owner": "63570294@N03",
        "ownername": "motorespt.com",
        "photo": [
            {
                "id": "5943107169",
                "secret": "e6099e3936",
                "server": "6029",
                "farm": 7,
                "title": "Peugeot 206",
                "isprimary": "0",
                "url_sq": "http://farm7.static.flickr.com/6029/5943107169_e6099e3936_s.jpg",
                "height_sq": 75,
                "width_sq": 75
            }
        ],
        "page": 1,
        "per_page": 500,
        "perpage": 500,
        "pages": 1,
        "total": "1"
    },
    "stat": "ok"
}
Run Code Online (Sandbox Code Playgroud)

要么

{"stat":"fail", "code":1, "message":"Photoset not found"}
Run Code Online (Sandbox Code Playgroud)

更新:
感谢所有的帮助,我能够找到错误,并使功能与IE 7 +,Firefox,Chrome等兼容.

function flickr_test(){
  var apiKey = 'YOUR_API_KEY';
  $.ajax({
    url: 'http://api.flickr.com/services/rest/',
    data: {
        method: 'flickr.test.echo',
        api_key: apiKey, 
        format: 'json',
        test: 'test string',
        jsoncallback: 'jsonFlickrApi'
    },
    dataType: 'jsonp'
  });
}
function jsonFlickrApi(response){
  console.log(response.stat);
}  
Run Code Online (Sandbox Code Playgroud)

PS:'test'var是我想要传递给回调函数的字符串

Nav*_*een 8

在IE 8及更低版本上解析JSON存在问题.它无法识别JSON函数.

下载文件https://github.com/douglascrockford/JSON-js/blob/master/json2.js将其 包含在您的应用程序中,它应该解决问题.