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を参照してください