Jquery Ajax Post没有调用action方法

时间:2012-04-20 06:44:14

标签: 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帖子调用action方法。这是动作方法

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

请告诉我上述代码中的错误。

1 个答案:

答案 0 :(得分:3)

为什么不调用action方法可能有不同的原因:

  • 你有一些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>

现在,如果你在控制器动作中放置一个断点,通常应该被击中。我建议你使用一个javascript调试工具,如FireBug,它将帮助你看到任何可能的javascript错误,并查看在AJAX请求期间发送的确切请求/响应。

您还会注意到我已删除async: false开关,因为这会在执行此请求期间对服务器进行同步调用,从而冻结Web浏览器,因此您不再使用AJAX。