2

特定のアクションを完了した後、このajax呼び出しがあります

  $.ajax({
              type: "POST",
              url: $("#myform").prop('action'),
              data: $("#myform").serialize(),
              xhrFields: {withCredentials: true},
              beforeSend: function(xhr) {
                xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').last().attr('content'));
              }
          });

create アクションを参照するこの ajax 呼び出しなので、以前に作成したセッションでフォームのパラメーターを保存したいと思います。だから私はこれを作成アクションに入れました

 def create
      session[:my_session].deep_merge!(params[:user])
      puts session[:my_session]

セッションを印刷して、サーバーから正しいパラメーターが含まれていることを確認します。ええ、正しい値で印刷されています。

{"profile_id"=>"1000", "first_name"=>"john", "last_name"=>"vieira", "email"=> "john@sandsora.com"} 

ここでの問題は、その呼び出しの後です。セッションは、保存したデータを保存しません!つまり、この割り当ての前に最新のデータを保存したことになります。そのエラーを検索したところ、CSRFトークンエラーである可能性があり、beforeSend関数を追加して修正しましたが、まだ同じ問題があるので、何か提案をお願いします?

4

1 に答える 1

0

私の最初の推測は、セッション Cookie ヘッダーが設定されていないということです。この Cookie レールがないと、正しいセッションを設定する方法がなく、リクエストの完了後にデータが「失われます」。ただし、ブラウザは ajax リクエストで自動的に送信する必要があります...

セッション Cookie が ajax リクエストで送信されていることを確認できますか?

于 2012-09-22T16:49:24.183 に答える