что-то не так с возвратом этого результата JSON с двумя списками - PullRequest
1 голос
/ 02 июля 2010

У меня есть сайт asp.net mvc, и я хочу вызвать сервер, когда я изменяю выпадающий список.мой код выполняет действие контроллера сервера, но я никогда не получаю обратный вызов.Есть какие-то ошибки, которые мне здесь не хватает?

Вот мое действие контроллера:

    public ActionResult LoadTeamsandApplications(int id)
    {
        WorkstreamRoadmapViewModel vm = new WorkstreamRoadmapViewModel();
        vm.Applications = GetAppList(id, 0);
        vm.Teams = GetTeamList(id, 0);
        JsonResult result = Json(vm);
        return result;
    }

ПРИМЕЧАНИЕ: что GetAppList () и GetTeamList () оба возвращают

 List<SelectListItem>

Вот мой код jquery:

 $("#filter").change(function(e) {

    var filter= $("#filter").val();
    var loadURL = "/List/LoadTeamsandApplications/" + filter;

    $.post(loadURL , function(data) {

        var items = "<option selected></option>";
        $.each(data.Teams, function(i, item) {
            items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
        });
        $("#teamFilter").html(items);

        var items1 = "<option selected></option>";
        $.each(data.Applications, function(i, items1) {
            items1 += "<option value='" + item1.Value + "'>" + item1.Text + "</option>";
        });
        $("#applicationFilter").html(items);

    }, "json");
});

РЕДАКТИРОВАТЬ

я добавил этот код:

$(document).ajaxError(function(e, xhr, settings, exception) {
    alert('error in: ' + settings.url + ' \\n' + 'error:\\n' + exception);
}); 

но все, что я получил, было "Ошибка не определена"

1 Ответ

1 голос
/ 02 июля 2010

Несколько указателей для устранения этой проблемы.

Убедитесь, что ваш серверный метод возвращает ожидаемые вами данные. Вы можете легко написать модульный тест, чтобы убедиться, что вы вернули JsonResult с данными, которые вы ожидали. В противном случае просто отладьте проект и установите точку останова на return Json(vm);, чтобы убедиться, что метод на самом деле возвращает.

Просто для отладки попробуйте просто перейти по URL, позволив GET - изменить return Json(vm);, чтобы вернуть Json(vm, JsonBehaviour.AllowGet); и посмотреть, что произойдет.

Если все вышесказанное хорошо, начните вставлять операторы console.log в свой JavaScript, чтобы убедиться в отсутствии опечаток и т. Д. Например:

    var items = "<option selected></option>";
    console.log(data.Teams);
    $.each(data.Teams, function(i, item) {
        items += "<option value='" + item.Value + "'>" + item.Text + "</option>";
    });
    $("#teamFilter").html(items);

    var items1 = "<option selected></option>";
    console.log(data.Applications);
    $.each(data.Applications, function(i, items1) {
        items1 += "<option value='" + item1.Value + "'>" + item1.Text + "</option>";
    });
    $("#applicationFilter").html(items);

Чтобы консоль заработала, вам нужно либо расширение Firebug для Firefox, либо просто запустить консоль разработчика в Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...