尝试将此列表作为数组返回,以便我可以通过JS在客户端获取它并迭代其值。
因此我的一个.ashx方法在方法的末尾返回一个这样的列表:
equipmentTypes是字符串的通用列表
_httpContext.Response.ContentType = "text";
_httpContext.Response.Write(equipmentTypes.ToArray());
当我在客户端收到它时,我得到文字文本“System.String []”。那么我应该返回什么内容类型?显然这不正确。
然后我假设我可以将它评估为js侧的数组(对象)。
答案 0 :(得分:4)
将数据发送到javascript时,您应该使用JSON。您不应该使用eval,因为这会让您面临许多安全漏洞(即XSS)。
有关C#和JSON的更多信息,请参阅此article,包括将C#数组转换为JSON。
答案 1 :(得分:1)
您应该将要写入响应流的对象序列化为JSON,其内容类型为application/json
。您可以使用内置的DataContract serialization或第三方开源库,例如NewtonSoft JSON.Net库。
在客户端,您应该使用JSON.parse
而不是eval
。
答案 2 :(得分:0)
在服务器端,您可以使用内置的JavaScriptSerializer
:
var js = new System.Web.Script.Serialization.JavaScriptSerializer();
_httpContext.Response.ContentType = "application/json";
_httpContext.Response.Write(js.Serialize(equipmentTypes.ToArray()));
在客户端上,您可以使用JSON.parse
(所有现代浏览器都支持)来获取阵列。当你控制客户端和服务器时,eval
并不是真正的安全风险,但它仍然是错误的工具。