不可知方案/协议 ajax 调用
Agnostic scheme / protocol ajax call
我想做一个适应当前方案 (http/https
) 的 ajax 调用。对于这种情况(xhr
和 xdr
)真正有效的方法是什么?
var xhr = new XMLHttpRequest(); // Or var xdr = new XDomainRequest
...
xhr.open("get", "//mydomain.com/api/v1/etc", true);
...
或者
var xhr = new XMLHttpRequest();
...
xhr.open("get", window.location.protocol + "//mydomain.com/api/v1/etc", true);
...
或者..还有什么?
注意:问题Making a protocol agnostic jquery ajax call没有提到XMLHttpRequest
和XDomainRequest
这两种情况,也没有提供经过验证的解决方案。
这种方法肯定不行:
xhr.open("get", "//mydomain.com/api/v1/etc", true);
因为这将向亲戚 url 发送请求,因为这里没有提及协议。
此方法适用于 XMLHttpRequest
:
xhr.open("get", window.location.protocol + "//mydomain.com/api/v1/etc", true);
重要提示 XDomainRequest
已过时 ,不应在您的应用程序中用作 it will work only in IE 8-9。
Great example of handling the various type of requests 可以在这里找到:
if(window.XDomainRequest){
if(protocol == "http:"){
if(RequestHelper.Busy){
setTimeout(function(){
RequestHelper.sendRequest(url,success,$);
},50);
} else {
RequestHelper.Busy = true;
$("body").append("<iframe id="ajaxProxy" style="display: none;" src=""+RequestHelper.GatewayURL+"" width="320" height="240"></iframe>");
$("#ajaxProxy").load(function(){
ajaxProxy.postMessage(url,"*");
//...
});
}
} else {
var xdr = new XDomainRequest();
xdr.open("get", url);
//...
}
} else {
$.ajax({
type: "GET",
url: url,
dataType: "html",
async:true, success:
function (response){
success(response); }
});
}
我想做一个适应当前方案 (http/https
) 的 ajax 调用。对于这种情况(xhr
和 xdr
)真正有效的方法是什么?
var xhr = new XMLHttpRequest(); // Or var xdr = new XDomainRequest
...
xhr.open("get", "//mydomain.com/api/v1/etc", true);
...
或者
var xhr = new XMLHttpRequest();
...
xhr.open("get", window.location.protocol + "//mydomain.com/api/v1/etc", true);
...
或者..还有什么?
注意:问题Making a protocol agnostic jquery ajax call没有提到XMLHttpRequest
和XDomainRequest
这两种情况,也没有提供经过验证的解决方案。
这种方法肯定不行:
xhr.open("get", "//mydomain.com/api/v1/etc", true);
因为这将向亲戚 url 发送请求,因为这里没有提及协议。
此方法适用于 XMLHttpRequest
:
xhr.open("get", window.location.protocol + "//mydomain.com/api/v1/etc", true);
重要提示 XDomainRequest
已过时 ,不应在您的应用程序中用作 it will work only in IE 8-9。
Great example of handling the various type of requests 可以在这里找到:
if(window.XDomainRequest){
if(protocol == "http:"){
if(RequestHelper.Busy){
setTimeout(function(){
RequestHelper.sendRequest(url,success,$);
},50);
} else {
RequestHelper.Busy = true;
$("body").append("<iframe id="ajaxProxy" style="display: none;" src=""+RequestHelper.GatewayURL+"" width="320" height="240"></iframe>");
$("#ajaxProxy").load(function(){
ajaxProxy.postMessage(url,"*");
//...
});
}
} else {
var xdr = new XDomainRequest();
xdr.open("get", url);
//...
}
} else {
$.ajax({
type: "GET",
url: url,
dataType: "html",
async:true, success:
function (response){
success(response); }
});
}