parseJSON error (jQuery 1.7.2)



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

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

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

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

在该页面上,有一个id为"imginfo"的div容器,其中包含一个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 contents),它是适用页面上的引用,就在#imginfodiv下面。

任何帮助弄清楚这将是最感激的!

正如Felix King所说,JSON文本没有正确格式化。如果您在调试控制台中尝试这样做,就可以看到它:

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

然后是这个:

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

您将看到,当键名没有引号时,它不起作用,这就是JSON字符串的情况。一种选择是使用eval()来解析字符串。一般来说,使用eval是一个糟糕的主意,因为它使页面中的代码受服务器返回的任何内容的支配,这可能是恶意代码。

最新更新