jQueryAJAX对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调用中定义的回调(complete、error或success)都没有触发。有一次,在早期的代码版本中,我看到了一个500编码的异常(内部服务器错误),但现在我什么都没看到。

环境:MVC3,jQuery1.6.net4

您应该尝试在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'
    });

最新更新