0

データベースからデータを取得するためにJavaScriptによって呼び出されるWebMethodがあります。データベースはこれに対して立ち入り禁止であるため、そこでは何も変更できません。これをJavaScriptで実行したいと思います。

JavaScriptに到達すると、文字列は次のようになります。

"[{"id":"0", "value":"Avery Bradley"},{"id":"31", "value":"Jason "Jet" Terry"}]"

('\"', '\\\"')エスケープ文字を追加するために置き換えてみました。私はそれを.NET側でそのように動作させることができましたReplace("\"", "\\\"")。ただし、これはそれを使用する自己完結型のコントロールであり、検証がそこにある必要があります。

私は何が間違っているのですか?

function GetDataCallBack(childId、senderParam、senderValue、callback){var values;

$.ajax({
    type: "POST",
    async: false,
    url: callback,
    data: "{'id': '" + childId + "', 'parameter': '" + senderParam + "', 'value': '" + senderValue + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (json) {
        values = json.d;
    }
});
return values;

}

4

2 に答える 2

1

問題はサーバー側にあります。無効なJSONを提供しています。具体的には、これは配列の最後のオブジェクト内にあります。

"value":"Jason "Jet" Terry"

周りの引用符は"Jet"エスケープする必要があります。サーバーから無効なJSONが提供されています。

壊れたJSONの修正を試みることはできますが、それは扱いにくく、不完全である可能性があります。

サーバー側は、有効なJSONを提供するように修正する必要があります。

于 2012-07-27T17:45:56.620 に答える
0

ここで何か間違ったことをしていると思います。JSONファイルはJSONだけで、他には何もありません。これは、JSONの文字列表現であってはなりません。これは、文字列に解析され、そこからオブジェクトに解析されます。ファイル/ストリーム/その他を文字列として扱うだけです。

JSONをマークアップ(XML、HTML)に埋め込む必要がある場合は、JSON文字列でその言語用に指定されたエスケープメソッドを使用します。

JSONをプログラムファイルに埋め込む必要がある場合は、エンコードされたオブジェクトの一致するリテラル表現を使用してみてください(たとえば、Javascriptでは非常に簡単です)。適切な表現がない言語を使用する場合は、それを追加のテキストファイルに保存し、そこから読み取ります。

于 2012-07-27T17:41:31.983 に答える