0

$.ajaxSetup()関数を使用して、Spine での各 AJAX 呼び出しにいくつかの追加パラメーターを追加しています。しかし、期待どおりに機能していません。

次のように $ajaxSetup() を呼び出すと、GET リクエストは正常に機能しますが、params は POST リクエストで上書きされ、id が期待するようにフォーム データに含まれません。

$.ajaxSetup
      data: "user_email=foo@bar.com&user_token=foobar"

その結果、データ文字列をオブジェクトに変更して、違いがあるかどうかを確認してみました:

settings =
        data:
          user_email:'foo@bar.com'
          user_token:'foobar'

$.ajaxSetup settings

ただし、それにより、リクエスト内の URL が次のように不正な形式で表示されます。 http://dev.myapp.com:5000/api/v1/posts?[object%20Object]

私はこれを JSFiddle (私のフィドル) で再作成して、私が怒っていないことをテストしましたが、私のアプローチは期待どおりに機能しているようです。GET リクエストの場合、データ オブジェクトの文字列が URL の末尾に追加され、POST リクエストでは、リクエストで送信されるフォーム データにデータ オブジェクトが追加されます。

それで、私は何を間違っていますか?これは Spine のバグですか、それとも他の何かですか?

jQuery バージョン: 2.0.3

4

1 に答える 1

0

問題は、スパインがデータを文字列として設定することです。

  type: 'POST'
  contentType: 'application/json'
  data: @record.toJSON()

背骨のソースから)

ajaxPrefilterを使用して、送信前にリクエストを修正できます。データは JSON 文字列であるため、いくつかのオプションがあります。

  • パラメータをJSONに追加します(を使用してデコードし、$.extend再度エンコードします)

  • POST パラメーターの代わりにカスタム HTTP ヘッダーとしてパラメーターを追加します

  • POST リクエストでも、パラメータを URL に追加します

于 2013-09-28T04:55:02.353 に答える