我如何告诉jQuery对跨域ajax请求自动使用"jsonp“,而对同一域请求一直使用"json”?我想用javascript编写一个客户端库,它只在必要时使用jsonp。让我们以这个小片段为例:
jQuery.ajax(url, {
dataType: "jsonp"
});
当数据类型为" jsonp“时,jquery总是使用jsonp,但已经自动检测它是否可以发送普通的Ajax请求(对于同域请求),或者是否必须使用javascript注入(对于跨域请求)。
因此,jQuery似乎已经能够自动检测到这一点,并决定使用哪种技术。但是当标准Ajax请求成为可能时,没有必要使用jsonp,所以我只想对跨域请求使用"jsonp“。我该怎么做呢?
或者你可以问jQuery一个网址是否是跨域的?然后我可以自己检查并使用不同的数据类型调用jQuery.ajax。
发布于 2011-06-03 21:26:55
您可以使用this之类的命令,然后检查方案/主机名是否匹配。解析url的一种简单方法是创建一个a
元素,并让浏览器为您提供url部分。
function sameOrigin(url){
var link = document.createElement("a");
link.href = url;
return ((link.protocol + link.host) === window.location.protocol + window.location.host);
}
var url = "http://stackoverflow.com/questions/6227584/jquery-automatic-usage-of-jsonp-for-cross-domain-ajax-requests";
if (sameOrigin(url)){
// use json
}else{
// use jsonp
}
https://stackoverflow.com/questions/6227584
复制相似问题