【问题标题】:jQuery AJAX call into MVC controller action never returnsjQuery AJAX 调用 MVC 控制器操作永远不会返回
【发布时间】:2012-01-06 15:45:44
【问题描述】:

我查看了之前发布的 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 编码的异常(内部服务器错误),但现在我什么也没看到。

环境:MVC3、jQuery1.6 .net4

【问题讨论】:

  • jekke - 我知道你没有提到它,但是 firebug 在运行代码时会报告什么?
  • 您在 FireBug 控制台或您正在使用的 javascript 开发人员工具栏中看到了什么?错误?是否正在发送 AJAX 请求?服务器响应什么?
  • 猜猜我们都同意了 :)
  • 其实它在 Firefox 中运行良好,所以 Firebug 并没有多说什么。事实证明这是一个仅限 IE 的错误。

标签: javascript jquery ajax asp.net-mvc jsonresult


【解决方案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'
    });

【讨论】:

  • 这似乎不能解决问题,但它仍然是一个好主意。点赞。
  • 感谢您的支持。抱歉,虽然没有解决问题。您是否尝试过关闭异步功能?如果不是,它可能有助于找到问题。除此之外,我不确定如何处理来自 firebug 的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
相关资源
最近更新 更多