我試圖使跨域跨瀏覽器.js請求(沒有任何庫)。Mozilla和Chrome中的XMLHttpRequest狀態0錯誤
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上循環 - 任何想法?
代碼正在處理您設置的網址。當我在應用程序中嘗試任何其他跨域網址時,它又將狀態設置爲0.請建議。 –
「代碼正在工作」 - 你的意思是說它「不工作」?我已經測試過,它仍然適用於我。如果您發現問題,請提供更多信息。 – leggetter
它正在處理您的網址。當我用我的URL替換它時,它再次在chrome和firefox中將狀態設置爲0。 –