2

REST API の JavaScript を介してサーバーにデータを送信しています (これは PhoneGap アプリ内にあるため、サーバー コードではなく jQuery を使用します)。私は独自の API を構築しているので、柔軟なオプションがありますが、POST データを処理するための好ましい方法があるかどうか疑問に思っています。GET には JSON を使用していますが、POST には JSON を使用する必要がありますか?

どのような方法で送るのが良いですか?

1) serialize メソッドを使用し、それをデータとして送信します。:

$('form').submit(function(e){

    e.preventDefault();

    var form = $(this);

    $.ajax({
        type: 'POST',
        url: form.attr('action'),
        data: form.serialize(),
        success: function(response){
            // handle response
        },
        error: function(a,b,c) {
            // handle error
        }   
    });

});

または 2) 次のような JSON オブジェクトとして送信します。

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

$('form').submit(function(e){

    e.preventDefault();

    var form = $(this);

    $.ajax({
        type: 'POST',
        url: form.attr('action'),
        data: JSON.stringify(form.serializeObject()),
        success: function(response){
            // handle response
        },
        error: function(a,b,c) {
            // handle error
        }   
    });

});
4

3 に答える 3

2

あなたの2番目の例はほとんど何$.ajax.serialize()内部で行い、POSTデータはとにかく常に文字列として送信されるので、実際にはどちらの方法でも問題になりません。最初の例はより簡潔で読みやすいように見えるので、これは利点です。

于 2013-02-17T14:33:55.010 に答える
2

空の配列を作成し、個々のフォーム フィールドを配列にプッシュし続け、配列を JSON.stringify し、POST 経由で送信します。

var formData = [];
//Push individual form elements to this aray, preferably in a "key" : "value" format.
var payload = JSON.stringify(formData);
//Then just send it to the server.

JSON オブジェクトの良いところは、さまざまなサーバー側言語から簡単に読み取ることができることです。

さらに、JSON オブジェクト内で 'key' : 'value' ペアを使用して、サーバーで各フィールドの値を手動で取得することもできます。

于 2013-02-17T14:45:22.323 に答える
1

質問では、「より良い方法」の意味を指定していないため、質問を編集してそれを明確にする必要があります。たとえば、パフォーマンス、メモリ使用量などに特に関心がありますか?

ただし、非常に一般的な意味で、この種のことを行うためのより良い方法は、読みやすいと思われるアプローチを使用することです。これは、コース全体でデバッグ、拡張、および変更が容易になるアプローチだからです。時間の。クライアント側のコードだけを見ると、最初のアプローチの方が読みやすいように見えますが、サーバー側を担当している場合は、それも考慮する必要があります。全体的に維持しやすいと思われるアプローチを採用してください。

最後に、他の人が使用できるように REST API を公開するかどうかを質問で示していませんが、公開している場合、実際に最も重要な要素は、API を読んで理解するのがいかに簡単かということです。その基準では、おそらく GET と POST の両方で JSON を使用する必要があります。

于 2013-02-17T14:41:23.687 に答える