2016-11-10 66 views
0

我有一個啓用了CORS的php web服務。Javascript CORS請求

我用http://www.test-cors.org/來確認Web服務的工作。根據這項服務XHR加載事件發射和狀態代碼爲200

我複製了測試一個Cors生成的代碼到在線JavaScript控制檯https://repl.it/languages/javascript

在這裏,我總是XHR狀態接收0。

基於Test Cors,我的web服務設置爲允許跨源。但是,當我使用在線JavaScript控制檯相同的Web服務返回狀態代碼0.

是否有原因,爲什麼此代碼不起作用?

var createCORSRequest = function(method, url) { 
    var xhr = new XMLHttpRequest(); 

    if ("withCredentials" in xhr) { 
    //This part is called correctly 
    xhr.open(method, url, true); 
    } 

    return xhr; 
}; 

var url = <URL> 
var method = 'GET'; 
var xhr = createCORSRequest(method, url); 

xhr.loadstart = function() { 
    //Not called 
} 
xhr.onload = function() { 
    //Not called 
}; 

xhr.onerror = function() { 
    // Called 
}; 

xhr.send(); 

alert(xhr.status) 
+3

因爲在提出實際請求之前您正在發出警報?也很好奇'在線JavaScript編譯器'是什麼。 –

+0

加 - 我只在打開電話之前附加了回調。 xhr =新的XMLHttpRequest。 xhr.loadstart = function().... xhr.open(method)... xhr.send()。 – ripvlan

+0

@JaredSmith我的意思是說控制檯不是編譯器。通過上面的代碼,調用xhr.onerror。即使我在調用後移動xhr.status的警報,警報仍然是0 – HShhanick

回答

1

你的狀態告警是由您發送之前(因此接收)的要求,因此狀態還沒有設置,你會得到0 所有快訊/檢查需要在裏面的onload /的onerror ,當請求完成時執行它們。