javascript - Internet Explorer 上的 JSON 解析错误

标签 javascript json internet-explorer parsing

我正在使用 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
  }
}

在 IE 中,函数返回 中的语法错误。 var 数据 = 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"
}

或者
{"stat":"fail", "code":1, "message":"Photoset not found"}

更新:
感谢所有帮助,我能够找到错误并制作与 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);
}  

P.S.:'test' var 是我想传递给回调函数的字符串

最佳答案

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

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

关于javascript - Internet Explorer 上的 JSON 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7051500/

相关文章:

MySQL - 将数据作为 json 存储在一列或单独的列中

ios - 如何在 iOS App 中解析 JSON

javascript - 有没有办法获取从 npm 运行的模块中的 package.json 属性?

internet-explorer - Calendly 小部件在 IE 中不起作用(Angular 应用程序)

javascript - 访问对象数组中的值

javascript - 触摸/单击和输入事件监听器不会触发 iOS

javascript - Angularjs - 复选框 - 计算多个选定/未选定的项目

javascript - 如何将 SortableJS 位置保存到对象中?

JavaScript 或 jquery : find out weather a page have openned with internet explorer object or not?

javascript - IE 不显示带有传递给 innerHTML 的 HTML 标签的字符串