2011-10-28 8 views
3

このリストを配列として返そうとすると、クライアント側でJSを介して取得し、その値を反復処理できます。HandlerからJS配列に汎用の文字列リストを返します

だから私の.ashxの方法の一つは、メソッドの最後に、このようなリストを返します:私はクライアント上で、それを受信した場合

equipmentTypesを、私は、文字列

 _httpContext.Response.ContentType = "text"; 
     _httpContext.Response.Write(equipmentTypes.ToArray()); 

の一般的なリストでありますリテラルテキスト "System.String []"を取得します。どのようなコンテンツタイプを返さなければなりませんか?明らかに、これは正しくありません。

次に、js側の配列(オブジェクト)にこれを評価できると仮定します。

答えて

4

JavaScriptにデータを送信する場合は、JSONを使用する必要があります。 evalは、多くのセキュリティ上の脆弱性(例:XSS)を開くため、使用しないでください。

C#とJSONの詳細については、articleを参照してください。これには、C#配列をJSONに変換する方法も含まれます。

+0

+1、JSONは確かに行く方法です。 –

1

レスポンスストリームに書き込むオブジェクトをJSONとしてシリアル化する必要があります。コンテンツタイプはapplication/jsonです。組み込みのDataContract serializationや、NewtonSoft JSON.Netライブラリなどのサードパーティのオープンソースライブラリを使用することができます。

evalではなく、JSON.parseを使用する必要があります。

あなたはビルトイン JavaScriptSerializer使用してJSONを生成することができ、サーバー側で
0

var js = new System.Web.Script.Serialization.JavaScriptSerializer(); 
_httpContext.Response.ContentType = "application/json"; 
_httpContext.Response.Write(js.Serialize(equipmentTypes.ToArray())); 

とクライアント上のあなたが戻って配列を取得するためにJSON.parse(すべての最新ブラウザでサポートされている)を使用することができます。 evalは、クライアントとサーバーの両方を管理しているときにはセキュリティ上のリスクはありませんが、依然として間違ったツールです。

関連する問題