首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对跨域ajax请求自动使用jsonp

对跨域ajax请求自动使用jsonp
EN

Stack Overflow用户
提问于 2011-06-03 21:18:07
回答 1查看 395关注 0票数 1

我如何告诉jQuery对跨域ajax请求自动使用"jsonp“,而对同一域请求一直使用"json”?我想用javascript编写一个客户端库,它只在必要时使用jsonp。让我们以这个小片段为例:

代码语言:javascript
运行
复制
jQuery.ajax(url, {
    dataType: "jsonp"
});

当数据类型为" jsonp“时,jquery总是使用jsonp,但已经自动检测它是否可以发送普通的Ajax请求(对于同域请求),或者是否必须使用javascript注入(对于跨域请求)。

因此,jQuery似乎已经能够自动检测到这一点,并决定使用哪种技术。但是当标准Ajax请求成为可能时,没有必要使用jsonp,所以我只想对跨域请求使用"jsonp“。我该怎么做呢?

或者你可以问jQuery一个网址是否是跨域的?然后我可以自己检查并使用不同的数据类型调用jQuery.ajax。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-03 21:26:55

您可以使用this之类的命令,然后检查方案/主机名是否匹配。解析url的一种简单方法是创建一个a元素,并让浏览器为您提供url部分。

代码语言:javascript
运行
复制
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
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6227584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档