我正在尝试解析位于我网站上另一个页面上的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 & 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下面。
任何帮助解决这个问题的人都会非常感激!
答案 0 :(得分:0)
正如Felix King所说,JSON文本格式不正确。如果您在调试控制台中尝试此操作,则可以看到它:
JSON.parse('{gallery: "foo"}')
然后这个:
JSON.parse('{"gallery": "foo"}')
您会看到,当键名不加引号时,它不起作用,这就是您的JSON字符串所具有的。一种选择是使用eval()来解析字符串。但是,使用eval通常是一个糟糕的想法,因为它会将页面中的代码置于服务器返回的任何位置,这可能是恶意代码。