Javascript 使用ajax 422从JS到控制器的rails 4不可处理实体可以';t验证CSRF令牌的真实性

Javascript 使用ajax 422从JS到控制器的rails 4不可处理实体可以';t验证CSRF令牌的真实性,javascript,ruby-on-rails,ajax,post,ruby-on-rails-4,Javascript,Ruby On Rails,Ajax,Post,Ruby On Rails 4,在我的show.html.erb页面中有一个数组,我想使用Ajax请求将它从javascript传递到控制器中的一个方法,但它给了我错误HTTP/1.1 422不可处理实体,我不知道在哪里搜索 以下是我的JS代码: function create_ajax_request (url, data, callback) { var xhr = new XMLHttpRequest(); xhr.open('PUT', url, true); xhr.setRequestHeader('C

在我的
show.html.erb
页面中有一个数组,我想使用Ajax请求将它从javascript传递到控制器中的一个方法,但它给了我错误
HTTP/1.1 422不可处理实体
,我不知道在哪里搜索

以下是我的JS代码:

function create_ajax_request (url, data, callback) {
  var xhr = new XMLHttpRequest();
  xhr.open('PUT', url, true);
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.setRequestHeader('Accept', 'application/json'); // I want JSON 
  xhr.responseType = "json";
  xhr.addEventListener('load', function() {
    xhr.responseJSON =  xhr.response;
    console.log(xhr.responseJSON);
    callback(xhr.responseJSON,  xhr);
   });
  xhr.send( JSON.stringify(data) );
  return xhr;
}

function submit()
{
  var SelectedValue = [];
  var name = 0;
  var radios = document.getElementsByTagName("input");
  for(var i=0; i<radios.length; i++) {
    if(radios[i].checked)
  {
  var valueSelected = radios[i].value;
  window.alert(valueSelected);
  SelectedValue.push("valueSelected")
  }
}
  var url = ['http://' + location.host, 'new_surveys', 'submit'].join('/');
  var callback = function(responseJSON, xhr) {
}
   create_ajax_request(url, {arrays: SelectedValue}, callback);
}

你是说你找到了解决办法?如果没有,您能从Web服务器输出中发布日志吗?不,我没有,我更新了我的问题,提前感谢如果您还没有,请查看建议的答案。选定的答案没有多大帮助,但其他建议似乎是一个很好的列表,可以尝试。我也遇到了同样的问题。使用POST和DELETE请求。但并不是所有的,只是很久以前,在开发和生产方面。我使用的是Rails4.1,当然我使用的是gem'jQueryRails'。我将尝试添加这个。但是我不喜欢它,因为它应该已经被提到的创业板提供了。我有一个类似的问题,[这个答案][1]为我工作。[1]:
class NewSurveysController < ApplicationController
  before_action :set_new_survey, only: [:show, :edit, :update, :destroy, :submit]
  skip_before_filter :verify_authenticity_token, only: [:submit]

# GET /new_surveys
# GET /new_surveys.json
def index
  @new_surveys = NewSurvey.all
end

def submit
  data = params[:arrays]
  some code ..
end
 Started PUT "/new_surveys/submit" for 127.0.0.1 at 2014-05-15 19:26:12 +0200
Processing by NewSurveysController#update as JSON
Parameters: {"arrays"=>["valueSelected"], "id"=>"submit", "new_survey"=>{}}
Can't verify CSRF token authenticity
Completed 422 Unprocessable Entity in 15ms

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
actionpack (4.0.4) lib/action_controller/metal/request_forgery_protection.rb:166:in `handle_unverified_request'
actionpack (4.0.4) lib/action_controller/metal/request_forgery_protection.rb:173:in `handle_unverified_request'
devise (3.2.4) lib/devise/controllers/helpers.rb:182:in `handle_unverified_request'