2

在 jQuery Docs 中,它提到可以在一个请求(数据类型部分)中使用多个dataTypes 。jQuery.ajax()这非常适合我正在尝试做的事情,但它并没有像我预期的那样工作。它仍在使用 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 检查器中的网络选项卡,这成功获取了文件,但它给了我错误

Uncaught SyntaxError: Unexpected token < 

而不是像jsonp那样获取它并将其转换为html。

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

4

1 回答 1

0

JSONP 在 URL 的末尾添加了一个额外"?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。

于 2012-08-21T04:00:29.887 回答