0

ajaxリクエストを介してjson文字列をサーブレットに渡します:

function add() {
    $.ajax({
    url: "pathToServlet" ,
    dataType: "text",
    data: ({
        name : 'myJsonString'
    }),
    success: function(data) {
            alert('returned!!');
    });
}

このjson文字列を構築するために、起動時に新しいjsonを文字列に追加するリスナーがあります。

var json = "";
json += "{ new json ..... }"

これはjSon文字列を構築する正しい方法ですか?jQueryメソッドを使用してjsonオブジェクト(存在する場合)を作成し、それに要素を追加してから、json文字列を自分で作成する代わりに、jsonオブジェクトを文字列に変換する必要がありますか?

4

2 に答える 2

2

私がお勧めするのは、オブジェクトを構築し、それをサーバーに送信する準備ができたら、を介してオブジェクトをシリアル化することJSON.stringifyです。

したがって、たとえば、次のようなオブジェクトがあるとしますdata

var data = {};

...定期的にプロパティを追加する可能性があります:

data.foo = "bar";
data.stuff = {nifty: "stuff"};

または、おそらくdata配列です:

var data = [];

...あなたが物事を追加する:

data.push({nifty: "stuff"});

次に、送信する準備ができたら、次のようにします。

function add() {
    $.ajax({
    url: "<%=savePortlet%>" ,
    dataType: "text",
    data: {
        name : JSON.stringify(data)
    },
    success: function(data) {
            alert('returned!!');
    });
}

オブジェクトをに渡すのでajax、JSON文字列のURLエンコードについて心配する必要はありません。jQueryが自動的に行います。

JSON.stringifyはECMAScript5の一部として定義されており、多くのブラウザによってネイティブにサポートされていますが、もちろん、私たちの多くは古いバージョンのブラウザをサポートする必要があります。そのような場合は、「JSONシム」を入手してJSON.stringify、それがない環境に追加することができます。それらの1つは、JSONの創始者であるDouglasCrockfordのgithubページから入手できます。

于 2012-05-23T08:56:44.487 に答える
0

jQueryを使用する場合は、JavaScriptとjQueryでJSONを処理するための非常に便利なプラグインであるjquery-jsonを使用できます。

使用法:

var jsonString = $.toJSON(myObject);
于 2012-05-23T09:21:36.650 に答える