2011-10-28 55 views
3

嘗試將此列表作爲數組返回,以便我可以通過JS在客戶端抓取它並遍歷其值。從處理程序返回一個通用字符串列表到一個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庫。

在客戶端上,您應該使用JSON.parse而不是eval

0

在服務器端,您可以使用生成JSON內置JavaScriptSerializer

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

和客戶端上可以使用JSON.parse(所有現代瀏覽器都支持),以獲得一個數組回來。當您控制客戶端和服務器時,eval並不是真正的安全風險,但它仍然是工作的錯誤工具。

相關問題