Вызов jQuery AJAX в действие контроллера MVC никогда не возвращается

Я просмотрел ранее опубликованные вопросы jQuery/MVC и не нашел подходящего ответа.

У меня есть следующий код JavaScript:

appCode.runReports = function (e) {

    var reportList = '';

    $('.rptCheck:checked').each(function (index) {
        reportList += ($(this).attr('reportName') + ',');
    });

    $.ajax({
            url: '/Report/RunReports/?reports=' + reportList,
            error: appCode.reportAjaxFailure,
            success: appCode.listRunningReports,
            complete: appCode.ajaxComplete,
            dataType: 'json'
        });

    e.preventDefault();
}

$(document).ready(function () {
    $('#runReportsButton').click(appCode.runReports);
});

URL-адрес, к которому он обращается, использует следующий контроллер:

namespace workflowDemoMVC.Controllers
{
    public class ReportController : Controller
    {

        public JsonResult RunReports(string reports = "")
        {
            try
            {
                var ret = reports.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                return Json(ret, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                ide.Trace.WriteLine(ex.ToString());
                return Json(null, JsonRequestBehavior.AllowGet);
            }
        }

    }
}

Когда я запускаю код в dev, действие контроллера выполняется, как и ожидалось, и возвращается, но ни один из обратных вызовов, определенных в вызове AJAX (завершение, ошибка или успех), не срабатывает. Однажды в более ранней версии кода я увидел исключение с кодом 500 (Internal Server Error), но теперь я вообще ничего не вижу.

Среда: MVC3, jQuery1.6 .net4


person Yes - that Jake.    schedule 06.01.2012    source источник
comment
jekke - я знаю, что вы не упомянули об этом, но что сообщает firebug о запуске кода?   -  person jim tollan    schedule 06.01.2012
comment
Что вы видите в консоли FireBug или на панели инструментов разработчика javascript, которую вы используете? Ошибка? Отправляется ли запрос AJAX? Что сервер отвечает?   -  person Darin Dimitrov    schedule 06.01.2012
comment
думаю, тогда мы все согласны с этим :)   -  person jim tollan    schedule 06.01.2012
comment
На самом деле, он отлично работает в Firefox, так что Firebug ни о чем не говорит. Оказывается, это ошибка только для IE.   -  person Yes - that Jake.    schedule 06.01.2012


Ответы (1)


Вы должны попытаться установить тип контента для вызова AJAX. У меня была такая проблема, и это исправило ее для меня. В принципе, вы бы сделали это. Я знаю, что у меня было много проблем с IE, пока я не указал это.

$.ajax({
        url: '/Report/RunReports/?reports=' + reportList,
        error: appCode.reportAjaxFailure,
        success: appCode.listRunningReports,
        complete: appCode.ajaxComplete,
        dataType: 'json',
        contentType: 'application/json; charset=utf-8'
    });
person divide_byzero    schedule 06.01.2012
comment
Это, кажется, не решает проблему, но это все еще хорошая идея. Проголосовать. - person Yes - that Jake.; 06.01.2012
comment
Спасибо за голосование. Извините, но это не решило проблему. Вы пытались сделать это с отключенным асинхронным режимом? Если нет, это может помочь найти проблему. Кроме этого, я не совсем уверен, что делать без ошибки от firebug. - person divide_byzero; 06.01.2012