jQuery AJAX多种内容类型似乎不起作用

时间:2012-08-21 03:29:03

标签: jquery ajax

在jQuery Docs中,它提到了one can use multiple dataTypes in a jQuery.ajax() request(数据类型部分)。这非常适合我想要做的事情,但它并没有像我预期的那样工作。它仍然使用JSON解析器解析响应,但在它以明文形式处理响应之前失败,就像配置应该要求的那样。这是我的代码:

jQuery.ajax({
    dataType: "jsonp html",
    url: "http://nomads.ncep.noaa.gov:9090/dods/rap/rap20120821/rap_f01.ascii?ugrdprs[7][0][-364][716]",
    success: function( data ) {
        console.log(data);
        callback(null, 'ucb');
    },
});

根据Chrome Inspector中的“网络”标签,该功能成功获取了该文件,但它给了我错误

Uncaught SyntaxError: Unexpected token < 

而不是像jsonp那样将其转换为html。

知道这里有什么问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

JSONP有 在您的网址末尾添加额外的"?callback=?"以指定回调。

例如,如果你打电话

https://gdata.youtube.com/feeds/api/videos/XZQFBbdOLRQ?v=2&alt=json

你可以看到纯粹的json。

但是,如果你打电话 https://gdata.youtube.com/feeds/api/videos/XZQFBbdOLRQ?v=2&alt=json&callback=jQuery1234

您的数据位于 jQuery1234(...)

然后,jquery会解析 jQuery1234(...)

中的数据


-------------------------------------------------- -------------------------------------

xml和html

也是如此

如果你打电话 https://gdata.youtube.com/feeds/api/videos/XZQFBbdOLRQ?v=2&callback=jQuery1234

(上面的链接会在 jQuery1234(...)中显示xml数据)

如果要将jsonp数据转换为html 这是我的建议:

http://example.com/?callback=jQuery1234

示例回复:

jQuery1234("<html><head></head><body>Hello World!</body></html>");

如果将dataType设置为“jsonp html”, jquery会将您的回复视为html。