parseJSON错误(jQuery 1.7.2)

时间:2014-05-18 02:25:59

标签: javascript jquery json parsing

我正在尝试解析位于我网站上另一个页面上的JSON对象。该页面是托管的电子商务平台,因此我没有服务器端访问或控制页面上的某些元素。

我有一些我正在使用的代码返回一个奇怪的错误。我已经在运行相同平台的另一个站点上测试了这个片段(当然使用了不同的URL),它确实可行。

网站:http://www.falcontechjax.com

$.get('no-risk-diagnostic-2.aspx', function(data) {
var prodImgDetail = $.parseJSON($(data).find("#imginfo").html());
console.log(prodImgDetail);
});

在该页面上,有一个div容器,其id为“imginfo,其中包含一个JSON对象。

<div id="imginfo" style="display:none;">{gallery : [{thumbnail : '/images/products/thumb/pipe.jpg', display : '/images/products/display/pipe.jpg', detailed : '/images/products/detail/pipe.jpg', alt : '', title : '' },{thumbnail : '/images/products/thumb/logo_printres1.jpg', display : '/images/products/display/logo_printres1.jpg', detailed : '/images/products/detail/logo_printres1.jpg', alt : 'PC Computer Diagnostic &amp; Repair in Jacksonville FL', title : '' }],active : {thumbnail : '/images/products/thumb/pipe.jpg', display : '/images/products/display/pipe.jpg', detailed : '/images/products/detail/pipe.jpg', alt : '', title : '' }}</div>

我运行时遇到的错误是:

Uncaught SyntaxError: Unexpected token g jquery-1.7.2.min.js

更新

只是告诉大家,这个设置有一个版本可以在与我相同的平台上的另一个站点上运行:

网站:www.allvintagegames.com

$.get( "nes-adventures-of-bayou-billy.aspx", function( data ) {
        var imgThumb, imgDisplay, imgDetailed, imgAlt, imgTitle;
        var mycrap = $.parseJSON($(data).find("#imginfo").html());   
        //img information
        $.each(mycrap.gallery, function(i, object) {
               //alert(object);
               imgThumb = object.thumbnail;
               imgDisplay = object.display;
               imgDetailed = object.detailed;
               imgAlt = object.alt;
               imgTitle = object.title;
        });
        //product information
        var prodinf = $.parseJSON($(data).find("#iteminfo").html());
               var infoLowprice = prodinf.lowprice;
               var infoId = prodinf.id;
               var infoName = prodinf.name;
               var infoCaption = prodinf.caption;
               var infoPrice = prodinf.price;
               var infoSaleprice = prodinf.saleprice;
               var infoCode = prodinf.code;
               var infoOrderable = prodinf.orderable;                
               $("body").append("<img src='"+imgThumb+"' />");
               $("body").append("<img src='"+imgDisplay+"' />");
               $("body").append("<img src='"+imgDetailed+"' />");
               $("body").append("<br />");
               $("body").append(infoLowprice + "<br/>");
               $("body").append(infoId + "<br/>");
               $("body").append(infoName + "<br/>");
               $("body").append(infoCaption + "<br/>");
               $("body").append(infoPrice + "<br/>");
               $("body").append(infoSaleprice + "<br/>");
               $("body").append(infoCode + "<br/>");
               $("body").append(infoOrderable + "<br/>");
});

最后一个示例包含另一个对象(#iteminfo内容),该对象是适用页面上的引用,位于#imginfo div下面。

任何帮助解决这个问题的人都会非常感激!

1 个答案:

答案 0 :(得分:0)

正如Felix King所说,JSON文本格式不正确。如果您在调试控制台中尝试此操作,则可以看到它:

JSON.parse('{gallery: "foo"}')

然后这个:

JSON.parse('{"gallery": "foo"}')

您会看到,当键名不加引号时,它不起作用,这就是您的JSON字符串所具有的。一种选择是使用eval()来解析字符串。但是,使用eval通常是一个糟糕的想法,因为它会将页面中的代码置于服务器返回的任何位置,这可能是恶意代码。