Ruby on rails XMLHttpRequest Post方法-标头正在停止函数
我试图向Rails服务器发送一个XMLHttpRequest对象,但是标头导致我的函数停止。以下是我的观察结果:Ruby on rails XMLHttpRequest Post方法-标头正在停止函数,ruby-on-rails,json,post,xmlhttprequest,Ruby On Rails,Json,Post,Xmlhttprequest,我试图向Rails服务器发送一个XMLHttpRequest对象,但是标头导致我的函数停止。以下是我的观察结果: 当我注释掉设置标题的3行代码时,xhr.readyState最终将等于4(匿名函数中的警报框将被触发) 如果3个标题行中的任何一行未注释,那么xhr对象的状态永远不会改变(没有任何警报框会触发) 我的三个问题是: 为了通过POST方法发送数据,我需要在上面的代码中更改什么 我的印象是POST方法需要发送一些头,但不清楚是哪些头,尽管“xhr.setRequestHeader('Co
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个小时。您的带有JavaScript代码的网页是否也在localhost:3000上运行?否则,这将被视为跨域请求,您的服务器将需要返回特殊的头。所以你有两个选择: 1) 将网页托管在与服务器相同的域上,这将使其成为相同的域请求
2) 让服务器返回相应的CORS头。您可以在此处了解有关CORS的更多信息:我发现了一个错误:需要在打开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);