$.get("CallBack.aspx", { nm: StateTx, nm2: StateTx2 }, function(data) {
$.each(data, function() {
$('[id$=DropDown1]').append("<option value=" + this['I3D'] + ">" + this['prmv'] + "</option>");
});
});
我的问题ie8最后一项未定义。怎么修好?
Amain cm2 = new Amain();
DataTable dt = cm2.Getdt(str, str3);
StringBuilder sb = new StringBuilder();
sb.Append("[");
foreach (DataRow item in dt.Rows)
{
sb.Append("{");
sb.Append("\"prmv\":\"");
sb.Append(item[0].ToString());
sb.Append("\"" + "},");
}
sb.Append("]");
Context.Response.ContentType = "application/json";
Context.Response.ContentEncoding = Encoding.UTF8;
Context.Response.Write(sb.ToString());
Context.Response.End();
答案 0 :(得分:1)
这可能是因为IE处理Javascript数组的方式。在IE中,
var a = [1, 2, 3, 4,];
有五个元素,其中最后一个是未定义的。在Firefox中,最后一个逗号被忽略,因此列表有四个元素。
查看Callback.aspx
返回的确切数据。
更新:您的回调代码会导致此问题:
sb.Append("\"" + "},");
这会产生一个像:
这样的数组[{"prmv":"1"},{"prmv":"2"},{"prmv":"3"},{"prmv":"4"},]
^ extra comma
在返回的数组的]
之前有一个额外的逗号。解决这个问题的一种方法可能是:
sb.Remove(sb.Length-1, 1); // remove extra trailing comma
sb.Append("]");
此修复程序适用于IE和Firefox(以及所有其他浏览器)。