0

Ruby on Rails アプリケーションで Heroku を使用し、Safari から実行しています。次の Ajax 呼び出しがあります。

$.ajax({
    type : 'POST',
    url : '/test_page',
    data : {stuff: arr1},
    dataType : 'script'
});

arr1オブジェクトの配列であると想定されています。そのconsole.log前に権利があり、それは次のとおりです。

[Object, Object, Object, Object, Object, ...]

ただし、この ajax 呼び出しを行うと、サーバー側でエラーが発生しました。ログが示した

2012-10-01T03:13:34+00:00 app[web.1]: Parameters: {"stuff"=>"[object Object]"}
2012-10-01T03:13:34+00:00 app[web.1]: WARNING: Can't verify CSRF token authenticity
2012-10-01T03:13:34+00:00 app[web.1]: NoMethodError (undefined method `to_hash' for "[object Object]":String):
2012-10-01T03:13:34+00:00 app[web.1]: Completed 500 Internal Server Error in 1ms

エラーを再現することはできません - それ以来、それを試すたびに、それは完全に機能し、以前は常に完全に機能していました (その意味ではとにかく)。これは私のテスト ケースの 1 つであり、送信されたデータの変更とは関係ありません。それは私にとって本当に紛らわしいです-オブジェクトの代わりにその文字列が時々サーバーに渡される原因は何ですか?

「CSRFトークンの信頼性を確認できません」という行に関連している可能性があると思います。これは、他の成功したリクエストのログに表示されないためです。

について疑問に思っている人のdataType: 'script'ために、応答がレンダリングされた js.erb ファイルであるため、そこにあります - http://lathamcity.com/posts/ajaxInRails.htmlを参照してください

4

1 に答える 1

1
dataType : 'script'

あなたはこれがうまくいくと確信しています..

試す

dataType : 'json'

また、送信するデータで json.stringify を使用していることを確認してください

data : {"stuff" : JSON.stringify(arr1)},

キーが引用符で囲まれていることを確認してください

于 2012-10-01T03:36:45.940 に答える