-1

クエリ結果は次のとおりです。["Language1","anotherLanguage","yetanotherlangugae"]

JavascriptmvcのモデルクラスfindAllメソッドは、(成功コールバックを介して)javascriptオブジェクトの配列を返します。フレームワークは、サーバーから返されたテキストをjavascriptオブジェクトの配列に変換します。クエリ結果が上記の場合、配列内の各文字列は、キーが文字のインデックスであり、値が文字である連想配列として扱われます。結果を以下に示します。

JSON.stringifyの呼び出しの結果を以下に示します。

[{"0":"L","1":"a","2":"n","3":"g","4":"u","5":"a","6":"g","7":"e","8":"1"},{"0":"a","1":"n","2":"o","3":"t","4":"h","5":"e","6":"r","7":"L","8":"a","9":"n","10":"g","11":"u","12":"a","13":"g","14":"e"},{"0":"y","1":"e","2":"t","3":"a","4":"n","5":"o","6":"t","7":"h","8":"e","9":"r","10":"l","11":"a","12":"n","13":"g","14":"u","15":"g","16":"a","17":"e"}]

クエリはjavascriptmvcモデルによって実行され、上記の結果が成功コールバックに渡されます。クエリ結果は、3つのJSONオブジェクトの配列に変換されます。何が起きてる?

これは、JSON.parseの呼び出しの問題ではありません。応答は、成功コールバックを介して渡された時点で、すでにjsonオブジェクトに解析されています。

結果は、JSONオブジェクトの配列になります。これは、自然な方法で文字列にシリアル化された場合、サーバーからの元の応答と同じように見えます。ここではそうではないので、問題があります。

実際のfindAllクエリを実行するスニペットは次のとおりです。

  $.ajax({
        url: '/language',
        type: 'get',
        dataType: 'json',
        data: params,
        success: this.callback(['wrapMany',success]),
        error: error
   });
4

3 に答える 3

0

私はあなたが探していると思いますjson.parse(json_string)
json.stringify()Javascriptが文字の配列と見なすものをJSONスタイルの文字配列に変換します。

object = json.parse(string);
string = json.stringify(object);
于 2011-08-20T02:42:56.203 に答える
0

答えが見つかりました。

javascriptmvcを使用してモデルを生成すると、findAllメソッドに対して次のようなものが生成されます。

    $.ajax({
        url: '/language',
        type: 'get',
        dataType: 'json',
        data: params,
        //success: this.callback(['wrapMany',success]),
        success: success,
        error: error
   });

コメント化された行に注意してください。応答でwrapManyを呼び出します。予想される応答は、文字列ではなく、JSONオブジェクトの配列です。応答が文字列の配列である場合、各文字列はJSONオブジェクトに変換されるため、質問に表示される結果になります。

したがって、[を返す代わりに"lan1", "lan2"]、サーバーは次のような応答をする必要があります[{"language" : "lan1"}, {"language" : "lan2"}]

于 2011-08-20T03:43:52.170 に答える
0

クエリが返された場合:

 "{ result : ["Language1","anotherLanguage","yetanotherlangugae"] }"

あなたはあなたが望むものを手に入れるでしょう。

于 2011-08-20T17:25:51.653 に答える