JSONP和无效标签

时间:2009-04-09 09:00:02

标签: json mootools jsonp

使用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 个答案:

答案 0 :(得分:11)

  

同一个文件很好用   request.json

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

答案 1 :(得分:5)

你需要在你的对象周围放置括号(正常的,而不是卷曲的),因为有时候Javascript会非常混乱,并且认为你正在做一个标签语句,这是一种我不知道的语句类型,直到我用Google搜索问题

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

尝试将您的对象{"jsondata":[ ... ]}改为({"jsondata":[ ... ]})。这似乎可以解决它。

答案 2 :(得分:2)

把它放在这里:

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

显示它的有效,但有额外的逗号(这将是bork IE,虽然FF应该处理它)。如果删除逗号无法解决问题,则需要发布更多代码以帮助我们找到错误。

答案 3 :(得分:0)

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