2

使用 mootools 和 JsonP 我在 Firefox 错误控制台中收到“无效标签”错误

JsonP 似乎工作(我正确获取数据)

{"jsondata":[{"title":"title1","link":"http://xxxx.xxx.xxx","thumbsrc":"http://xxxx.xxx.xxx/17_t.jpg" ,"description":".......","pubDate":"2009-03-09 06:26:00",},{"title":"title2","link":"http://xxxx.xxx.xxx","thumbsrc":"http://xxxx.xxx.xxx/16_t.jpg" ,"description":".......","pubDate":"2009-03-09 06:08:09",}]}

但我在“jsondata”上收到无效标签错误

同一个文件适用于 request.json


逗号已删除...什么都没有

这是我正在使用的代码

window.addEvent('domready', function() {

var gallery = $('gallery'); 

new JsonP('http://myjsoncodeurl',{
        onComplete: function(jsonObj) {
            addImages(jsonObj.jsondata);
        }
    }).request();

var addImages = function(images) {
    images.each(function(image) {
        var el = new Element('div', {'class': 'item'});
        var name = new Element('h3').inject(el);
        var a1 = new Element('a', {'href': image.link,'html': image.title}).inject(name);                       
        var desc = new Element('span', {'html': image.description}).inject(name, 'after');
        var a2 = new Element('a', {'href': image.link}).inject(desc,'after');               
        var img = new Element('img', {'src': image.thumbsrc}).inject(a2);
        el.inject(gallery);
    });
};

});

它适用于普通 request.Json,但 JSONP 不喜欢我的代码 :(

4

4 回答 4

11

同一个文件适用于 request.json

使用 JSONP,您的响应应该返回一个 JavaScript 函数调用(即回调),其中 JSON 数据作为参数传入。如果您的响应是一个普通的旧 JSON 文本,它在 JSONP 的上下文中将不起作用。您必须定制后端以接受回调参数并使用 JSON 数据调用该回调。

于 2009-09-08T19:16:12.120 回答
5

你需要在你的对象周围加上括号(普通的,而不是大括号),因为有时 Javascript 会变得非常混乱,并认为你正在做一个标签语句,这是一种在我用谷歌搜索这个问题之前我不知道存在的语句类型。

https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Statements#label_Statement

尝试传递你的对象, {"jsondata":[ ... ]}, 作为 ({"jsondata":[ ... ]})代替。这似乎对它进行了排序。

于 2011-05-05T14:03:40.533 回答
2

把它放在这里:

http://json.parser.online.fr/

表明它是有效的,但有额外的逗号(这会破坏 IE,尽管 FF 应该处理它)。如果删除逗号不能解决问题,您需要发布更多代码以帮助我们找到错误。

于 2009-04-09T17:47:42.727 回答
0

这可能是由于日期后的额外逗号

于 2009-04-09T17:43:54.200 回答