我想發送一個XMLHttpRequest對象到我的Rails服務器,但標題導致我的函數停止。這裏是我的意見:XMLHttpRequest Post方法 - 標題停止功能
當我註釋掉3行代碼設置的標頭,然後xhr.readyState最終將等於4(警告框匿名函數關火內)。
如果3個標題行中的任何一行未註釋,則xhr對象永不改變狀態(警報框中沒有任何一個會觸發)。
function saveUserProfile(){ var user_email = $('#userEmail_box').val(); var xhr = new XMLHttpRequest(); xhr.onreadystatechange=function(){ if (xhr.readyState==4 && xhr.status==200) { alert("Yes: " + xhr.readyState); } alert("No: " + xhr.readyState); } var method = 'POST'; var params = 'userEmail=user_email'; var url = 'http://localhost:3000/xhr_requests.json'; var async = true; //Need to send proper header information with POST request xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhr.setRequestHeader('Content-length', params.length); xhr.setRequestHeader('Connection', 'close'); xhr.open(method, url, async); xhr.send(params); }
我的三個問題是:
我需要什麼,在代碼中更改上面以便通過POST方法發送的數據?
我的印象是,POST方法需要發送一些頭文件,但我不清楚哪些是「xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded 「);」似乎是參考文獻中經常提到的一個。有人可以幫助我理解a)爲什麼需要發送標題和b)需要發送哪些標題?
我正在使用rails服務器,並且正在本地進行開發。最終,這些代碼將在移動設備的客戶端執行,該設備將轉到託管軌道服務器以傳遞和接收數據。在rails服務器上使用POST方法有什麼限制嗎?請記住,我計劃在從服務器向客戶端發送信息時使用JSON。
謝謝!
UPDATE:標頭應該來開盤後的XHR請求但在此之前它發送:
xhr.open(method, url, async);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.setRequestHeader('Content-length', params.length);
xhr.setRequestHeader('Connection', 'close');
xhr.send(params);
希望這篇文章可以節省別人4小時。
我發現了這個錯誤:需要在打開xhr請求後但在發送之前設置標頭。你可以參考這篇文章,http://stackoverflow.com/questions/6207339/xmlhttprequest-setrequestheader-error – Vee