asp.net-mvc-3 - Jquery Ajax Post 没有调用操作方法

标签 asp.net-mvc-3 jquery

function CreateModalDialogWindow(urlPath) {
$.ajax({
    url: '@Url.Action("Popup","Project")',
    type: 'POST',
    async: false,
    success: function (data) {
        debugger;
        $('#dialog').html(data).dialog({
            autoOpen: true,
            width: 400,
            resizable: false,
            modal: true
        });
    },
    error: function(){
       alert('Error!');
    }
});

return false;

}

我想使用ajax post调用一个action方法。这是操作方法

 [HttpPost]
    public PartialViewResult Popup()
    {
        return PartialView("~/Views/Shared/Project/Popup.cshtml");
    }

请告诉我上面的代码有什么问题。

最佳答案

未调用操作方法可能有不同的原因:

  • 您有一些 JavaScript 错误
  • 您从未调用过CreateModalDialogWindow函数
  • 您在单击链接或表单提交时调用了 CreateModalDialogWindow,但您忘记通过返回 false 来取消此按钮的默认操作。

因此,首先在准备好的文档中调用此代码,看看它是否有效:

<script type="text/javascript">
$(function() {
    $.ajax({
        url: '@Url.Action("Popup", "Project")',
        type: 'POST',
        success: function (data) {
            $('#dialog').html(data).dialog({
                autoOpen: true,
                width: 400,
                resizable: false,
                modal: true
            });
        }
    });
});
</script>

现在,如果您在 Controller 操作中放置断点,通常应该会命中它。我建议您使用 JavaScript 调试工具,例如 FireBug,它将帮助您查看任何可能的 JavaScript 错误,并查看 AJAX 请求期间发送的确切请求/响应。

您还会注意到,我已删除了 async: false 开关,因为这会在执行此请求期间同步调用服务器并卡住 Web 浏览器,因此您不再执行 AJAX。

关于asp.net-mvc-3 - Jquery Ajax Post 没有调用操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10241503/

相关文章:

asp.net - System.Web.Webpages.Html 与 System.Web.Mvc 命名空间中的 HtmlHelper 类

c# - 在 ASP.net MVC 中显示没有 Controller 或操作的文件夹中的 View

c# - ASP.NET C# 网络摄像头集成

javascript - getElementsByClassName 与 getElementById 不同(支持浏览器)

javascript - 如何通过 JSON 更新具有多个系列的 Highcharts?

javascript - 如何停止警告框按回车循环?

jquery - 使用 Controller 和 Action 名称进行 ajax 调用

asp.net-mvc-3 - 带有附加 HTML 的 MVC3 Html.BeginForm()

javascript - 为什么我使用 setTimeout 的同步代码在 JavaScript 中表现得异步?

javascript - 如何判断一个字符串是否是一个字符串化的 JSON 对象