0

何が起こっているのかわかりません。私は答えを探すのに疲れ果てました。私はそれがprocessDataだと思っていましたが、その場合、ajaxは起動しません。私は一生、何が起こっているのか理解できません。

POST、ajax経由でデータを送信しようとしています。

ページ内のデータの設定方法により、実際にハッシュを作成して配列にプッシュできます。だから私は何かを持っています。

私が形成しているデータは次のようになります。

init func で、いくつかの変数を設定しました。

this.dataHolder = [];

私のプラグインのメソッドで:

            _acceptData:function(){
                var item = {};
                item[this.schema.itemId] =
                          {
                             "Color" : this.schema.color,
                             "Size" : this.schema.size,
                              "Cost"    : this.schema.cost

                          }
               return item;
            },

基本的に私は他のいくつかの方法などを持っていますが、要点は、上記のデータ構造が次の中に入れられるということです: this.dataHolder

データをダンプすると、そうあるべきように見えます。コード全体のさまざまなconsole.logは、データが適切に形成されていることなどを示しています..しかし、それをajaxデータに渡すと..奇妙なことをします。

私が私のajaxを持っているとき.. ala:

 var self = this;
.ajax({
  type: "POST",
  data : {matchedItems : self.dataHolder},
  dataType: json,
  url : /some/path/

私は非常に多くの異なることを試しましたが、すべての場合、データは未定義 (投稿時) または次のような奇妙な形式です: (ログ)

  $VAR1 = {

      'matchedItems[0][itemid1][Color]' => 'Blue',
      'matchedItems[0][itemid1][Size]' => '11',
      'matchedItems[0][itemid1][Cost]' => '33.90',
      'matchedItems[1][itemid2][Color][]' => 'Silver',
      'matchedItems[1][itemid2][Size]' => '13',
      'matchedItems[1][itemid2][Cost]' => '44',
      'matchedItems[2][itemid3][Color][]' => 'Red',
      'matchedItems[2][itemid3][Size]' => '9',
      'matchedItems[2][itemid3][Cost]' => '23'
    };

または異なる順列

data : MatchedItems : {self.dataHolder}

また

data : {MatchedItems : {self.dataHolder}}

など..問題ではありません.POSTは常にいくつかの本当に奇妙なフォーマットを取得します.

これは、私が送信したときと受信したときの外観です。

matchedIeds = {
          itemId1 :
            {
              Color : Red,
              Size : 11,
              Cost    : 44
            },
          itemId2 :
            {
              Color : Blue,
              Size : 8,
              Cost    : 12
            },
          itemId3 :
            {
              Color : Blue,
              Size : 19,
              Cost    : 88.09
            }
          }

つまり、そのようにデータを設定しているので、何が悪いのかわかりません。

注: processData : false を試しましたが、まったく役に立ちませんでした。

編集: これは、.ajax メソッドに渡す前に、console.log で出力したコードです。 Console.log

[Object { itemid1={...}}, Object { itemid2={...}}, Object { itemid3={...}}]

これは投稿のパラメーターにあります: jquery.js (641行目) POST http://www.myurl/to/test

200 OK 79ms
jquery.js (7829行目)

ヘッダーPostResponseJSONCookie

Parametersapplication/x-www-form-urlencoded
undefined   undefined
undefined   undefined
undefined   undefined
4

0 に答える 0