Ошибка добавления опций выбора с Jquery AJAX JSON - PullRequest
0 голосов
/ 30 марта 2011

Вот первая часть моей возвращенной строки JSON (из ответа POST в firebug)

{"d":"{\"companies\" : [{\"CompanyID\" : \"5\",\"CompanyName\" : \"(No Insurance Carrier)\"},{\"CompanyID\" : \"0\",\"CompanyName\" : \"(None Specified)\"},{\"CompanyID\" : \"72431\",\"CompanyName\" : \"A.M. Technologies, Inc./W.P. Hickman Systems\"},{\"CompanyID\" : \"72486\",\"CompanyName\" : \"AAA\"},...]}"}

Вот скрипт для pageLoad:

$.ajax({
    type: "POST",
    url: strURL + "/GetCompanyNames",
    contentType: "application/json; charset=utf-8",
    data: "{'strApplicationName':'hidden', 'strAPIkey':'hidden'}",
    dataType: "json",
    success: function(msg) {
       var options = $("#ddlCompany").attr('options');
         $('option', $("#ddlCompany")).remove();
         $("#ddlCompany").get(0).options[0] = new Option("Select Company", "-1");
           $.each(msg.d, function(item) {
              options[options.length] = new Option(item.CompanyName, item.CompanyID);
        });
     },
     error: function() {
        alert("Failed to load Companies");
     }
  });

Я получаю сообщение об ошибке: CompanyName не определено.Кто-нибудь может увидеть, что я здесь делаю не так?Нужно ли мне сначала добраться до таблицы в msg.d?

$.ajax({
                    type: "POST",
                    url: strURL + "/GetCompanyNames",
                    contentType: "application/json; charset=utf-8",
                    data: "{'strApplicationName':'hidden', 'strAPIkey':'hidden'}",
                    dataType: "json",
                    success: function(msg) {
                        $("#ddlCompany").get(0).options.length = 0;
                        $("#ddlCompany").get(0).options[0] = new Option("Select Company", "-1");
                        window.alert(msg.d);
                        for (var i = 0; i <= msg.d.companies.length - 1; i++) {
                            $("#ddlCompany").get(0).options[$("#ddlCompany").get(0).options.length] = new Option(msg.d.companies[i].CompanyName, msg.d.companies[i].CompanyID);
                        }

                    },
                    error: function() {
                        alert("Failed to load Companies");
                    }
                });

Я тоже пробовал, но компании не найдены.В окне оповещения отлично отображается JSON msg.d.

, поэтому в этом нет необходимости, но если я проанализирую результат в JSON, он будет работать в Firefox, а не в IE?Например:

$.ajax({
                    type: "POST",
                    url: strURL + "/GetCompanyNames",
                    contentType: "application/json; charset=utf-8",
                    data: "{'strApplicationName':'hidden', 'strAPIkey':'hidden'}",
                    dataType: "json",
                    success: function(msg) {
                        if (msg.hasOwnProperty("d")) { msg = msg.d; }
                        var json = JSON.parse(msg);
                        $("#ddlCompany").get(0).options.length = 0;
                        $("#ddlCompany").get(0).options[0] = new Option("Select Company", "-1");
                        for (var i = 0; i <= json.companies.length - 1; i++) {
                            $("#ddlCompany").get(0).options[$("#ddlCompany").get(0).options.length] = new Option(json.companies[i].CompanyName, json.companies[i].CompanyID);
                        }
                    },
                    error: function() {
                        alert("Failed to load Companies");
                    }
                });

Есть идеи, почему этот скрипт будет зависать в IE?

1 Ответ

0 голосов
/ 30 марта 2011

Почему msg.d?Где находится d?Насколько я вижу, это должно быть companies.И значение передается в качестве второго аргумента для обратного вызова, см. Документацию :

$.each(msg.companies, function(index, item) {
    options[options.length] = new Option(item.CompanyName, item.CompanyID);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...