Jquery DropDownlist неопределенный элемент IE 8 - PullRequest
0 голосов
/ 26 февраля 2010
$.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 Ответ

1 голос
/ 26 февраля 2010

Это может произойти из-за способа, которым 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 (и всех других браузеров).

...