【发布时间】:2014-02-20 13:50:45
【问题描述】:
我正在尝试进行跨域跨浏览器 .js 请求(没有任何库)。
var isIE8 = window.XDomainRequest ? true : false;
var invocation = createCrossDomainRequest();
var url = 'http://someserver.com/cgi-bin/targets.cgi?sid=';
function createCrossDomainRequest(url, handler)
{
var request;
if (isIE8)
{
request = new window.XDomainRequest();
}
else
{
request = new XMLHttpRequest();
}
return request;
}
function sendTarget(sid,target)
{
if (invocation)
{
var phone_id = getCookie('phone_cookie');
url = url + sid +'&target='+target+'&phone_id='+phone_id+'&url='+encodeURIComponent(document.URL);
if(isIE8)
{
invocation.onload = outputResult;
invocation.open("GET", url, true);
invocation.send();
}
else
{
invocation.open('GET', url, true);
invocation.onreadystatechange = handler;
invocation.send();
}
}
else
{
var text = "No Invocation TookPlace At All";
}
}
function handler(evtXHR)
{
if (invocation.readyState == 4)
{
if (invocation.status == 200)
{
outputResult();
}
else
{
var text = "Invocation Errors Occured";
}
}
}
function outputResult()
{
var response = invocation.responseText;
}
它适用于 IE,但不适用于 Mozilla 和 Chrome。这些浏览器收到错误“发生调用错误”。 invocation.status 为零。 Access-Control-Allow-Origin 设置为 *。
我需要做什么来解决这个问题?
我不能使用任何库,只需要清理 JS(技术问题)。没有jQuery!此代码需要在许多客户端网站上(不是一个或两个)。我不需要得到响应,只需要发送请求。而且我没有在 XMLHttpRequest 上循环 - 有什么想法吗?
【问题讨论】:
标签: javascript xmlhttprequest cross-domain