1

私は、jQuery モバイル Web アプリをネイティブ ビルドとして作成するために、trigger.io を使い始めました。現在の形式の Web アプリは、janky.postというプラグインを使用してクロスドメイン投稿を作成し、データを JSON 形式で送信します。これは、PHP ベースの API が期待するものです。

forge.request.ajax代わりに、1 つを除くアプリ内のすべてのフォームで機能するネイティブ ビルドで使用を開始しました。リクエストは、json でエンコードされたオブジェクトとして送信されたようには見えず、標準の $_POST 配列です。API を変更してこれを検出できるので、これはそれほど問題ではありませんが、送信されたデータが多次元であるため、メソッドが配列を正しく形成していないようで、期待どおりに構造化されていません。

希望する出力を得るために、この動作を修正するにはどうすればよいですか? フォームのjson送信を強制する方法はありますか? はいの場合、これを行うことの欠点はありますか? 今後、このフォームの送信にファイルのアップロードを追加できなくなりますか?

例:

私が意味することを拡張すると、プロセスは次のようになります。送信時に、コントローラーはフォーム データを json にフォーマットし、次のように ajax メソッドに渡します。

window.forge.ajax({
    type: 'POST',
    url: 'foo.com/bar',
    data: data,
    dataType: 'json',
    success: function( response ) {
        /* code omitted */
    });
});

この理由は、投稿内のデータの一部がフォーム自体から直接ではなく、追加のモデルによって提供されるためです。掲載される仕組みはdata以下のとおりです。

{
    id: '23',
    date: '2012-08-30 00:00:00',
    name: 'Foo',
    items: [{
        description: 'Bar',
        quantity: '1',
        price: '20'
    }]
}

しかし、PHP ベースの API によって配列として受信されると、構造は次のようになります。

array(
    'id' => '23'
    'date' => '2012-08-30 00:00:00',
    'name' => 'Foo',
    'items' => array(
        0 => array( 'description' => 'Bar' ),
        1 => array( 'quantity' => '1' ),
        2 => array( 'price' => '20' )
    )
)

ご覧のとおり、items 配列内の 1 つのアイテムに対応する各フィールドが独自の配列に変更されていますが、これは間違っています。次のようにする必要があります。

 items = array(
     0 => array(
         'description' => 'Bar',
         'quantity' => '1',
         'price' '20'
     )
 )
4

1 に答える 1

1

@Connorhd が言ったように、これは配列内のオブジェクトをエンコードする方法のバグでした。今修正しました - 週末までに展開します。ご不便おかけしてすみません!

于 2012-08-30T17:54:52.820 に答える