我想发送一个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