0

こんにちは、JSON オブジェクトでデータを作成し、Ajax ポストを介して文字列として送信する必要があります。

次の形式で何かを送信する必要があります。

{
 "myRequest": {
     "myRequestType": "updateStatus",
     "fields": [
         {
             "item1": "data1",
             "item2": "data2",
             "item3": "data3",
             "formUpdateField": "data4"
         }
     ]
 }
}

更新を送信するレコードを選択するためのチェックボックスがあるフォーム テーブルがあります。基本的に、送信はレコードのステータスを更新することです。

上記に基づいて、item1、item2、item3 のデータにアクセスできます。これは非フォーム データです。これを JSON オブジェクトに追加する必要があります。これくらいはできると思います。しかし、私の問題は、フォームから取得したデータもこの JSON オブジェクトに追加する必要があることです。

フォームからデータを取得することはできますが、これを作成中の JSON オブジェクトに追加するにはどうすればよいですか?

もう 1 つの問題は、フォーム テーブルから複数のレコードを選択できることです。

JSON/jQueryなどを使用してこれを行う方法はありますか?

4

2 に答える 2

0

この質問serializeObjectの関数を使用して、フォームデータをオブジェクトとして取得してみてください。次に、非フォームデータをそのオブジェクトに追加できます。

おそらく次のようなものです:

var data = $('form').serializeObject();
data.item1 = 'data1';
data.item2 = 'data2';
data.item3 = 'data3';
myJson.myRequest.fields = [data];
于 2012-07-01T20:46:23.217 に答える
0

オブジェクトをオブジェクトとして構築し、後で文字列化します。JSON 文字列を自分で文字列処理するのは、後で文字列化するよりもはるかに困難です。

最新のブラウザーのみをサポートすることに満足している場合はJSON.stringify()、ECMA5 で導入されたネイティブ メソッドを利用できます。そうでない場合は、同じことを行うサードパーティのスクリプトがたくさんあります。

これを試して:

HTML (単純なフォーム)

<form id='myForm'>
    <input type='text' name='foo' />
    <input type='text' name='bar' />
    <input type='checkbox' name='foobar' />
    <input type='submit' value='go'>
</form>

JS

$(function() {

    //initialise object
    $('#myForm').on('submit', function() {
        var data = {
            myRequest: {
                myRequestType: 'updateStatus',
                fields: [{
                    item1: 'data1',
                    item2: 'data2',
                    item3: 'data3',
                    formUpdatedField: 'date4'
                }]
            }
        };

            //iterate over form fields and add each one in to our data
        $(this).find('input:not([type=submit]), select, textarea').each(function() {
            data.myRequest.fields[0][$(this).attr('name')] = $(this).val();
        });

            //do the request
        $.ajax({url: 'some/url.php', method: 'post', data: JSON.stringify(data)}).done(function() {
            //on success...
        });
        return false;
    });
});

これにより、フィールドとその値がオブジェクトに繰り返し追加され、AJAX リクエストの一部として送信されるときに文字列化されます。

最後に、あなたのfields定義は、内部オブジェクトを純粋に格納するためだけに存在する配列ではなく、単なるオブジェクトではありませんか? 不必要に思えますが、おそらく、あなたが示した以上のデータ構造があります。

于 2012-07-01T21:03:17.627 に答える