MVC3 JQuery AJAX ||Несколько переданных параметров являются нулевыми - PullRequest
1 голос
/ 01 сентября 2011

У меня проблемы с отправкой нескольких параметров на мой контроллер с использованием AJAX. Оба параметра заканчиваются нулем и не могут понять почему. Я пытаюсь отправить выбранные значения из двух выпадающих списков с именами "cat_fam_codes" и "cat_codes"

ОБНОВЛЕНИЕ: я добавил тип контента и типы данных, перечисленные ниже. Та же проблема: оба параметра, переданные в контроллер, являются нулевыми.

По виду:

    $('#cat_fam_codes').click(function () {
        var categoryData = {
            categoryFamilyCodes: $('#cat_fam_codes').val(),
            categoryCodes: $('#cat_codes').val()
        };

        $.ajax({
            type: 'POST',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            url: '/EventReport/GetCCRCodes/',
            data: JSON.stringify(categoryData),
            success: function (jsonresults) {
                if (jsonresults != null) {
                    $('#ccr_codes').find('option').remove().end();
                    for (var i = 0; i < jsonresults.length; i++) {
                        $('#ccr_codes').append('<option value="' + jsonresults[i].CCRCodeId + '">' + jsonresults[i].Description + '</option>');
                    }
                }
            },
            error: function (xhr, status, error) {
                alert('Failed to retrieve CCR Codes for this list.  A "' + error + '" response was returned.');
            }
        });

    });

В контроллере:

[HttpPost]
public ActionResult GetCCRCodes(string categoryFamilyCodes, string categoryCodes)
{ ... }

Оба параметра, которые передаются в контроллер, являются нулевыми. Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Проверьте с помощью Fiddler или аналогичного инструмента, что возвращается контроллеру через ваш вызов $ .ajax (). Возможно, что $ .ajax не отправляет данные в форме, которую JsonValueProviderFactory может десериализовать. Когда я публикую JSON через $ .ajax, я всегда явно указываю следующие параметры:

 contentType: "application/json; charset=utf-8",
 dataType: "json",
2 голосов
/ 01 сентября 2011

Я бы выбрал более простой подход.Предполагая, что вы получили эти DropDownLists внутри HTML-формы

$.post("/EventReport/GetCCRCodes/", $("form").serialize());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...