Jquery DropDownlist未定义的项目IE 8

时间:2010-02-26 07:46:26

标签: jquery internet-explorer-8 undefined

$.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();

1 个答案:

答案 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(以及所有其他浏览器)。