【发布时间】:2023-04-03 22:50:02
【问题描述】:
我如何告诉 jQuery 自动使用“jsonp”处理跨域 ajax 请求,而它继续使用“json”处理同域请求?我想用 javascript 编写一个客户端库,仅在必要时使用 jsonp。我们以这个小sn-p为例:
jQuery.ajax(url, {
dataType: "jsonp"
});
当数据类型为“jsonp”时,jquery 总是使用 jsonp,但已经自动检测它是否可以发送正常的 Ajax 请求(对于同域请求)或者它是否必须使用 javascript 注入(对于跨域请求)。
所以 jQuery 似乎已经能够自动检测到这一点并决定使用哪种技术。但是当一个标准的 Ajax 请求是可能的时,没有必要使用 jsonp,所以我想只对跨域请求使用“jsonp”。我该怎么做?
或者也许可以询问 jQuery 一个 url 是否是跨域的?然后我可以自己检查并使用不同的数据类型调用 jQuery.ajax。
【问题讨论】:
-
如果你要编写代码来处理 JSONP,它有什么区别?无论如何,通过 jQuery,它或多或少是透明的;你的回调会以一种或另一种方式被调用。
-
假设我只在必要时才喜欢使用“hacks”。在所有主要浏览器都支持 CORS 之前,JSONP 是必不可少的。
-
如果你打算在 JavaScript 库中使用标准方法,那将是一个小技巧。您可以检查当前 url 和目标 url。不理想但相当简单。
标签: javascript jquery