Asp.net mvc 3 Jquery Ajax Post未调用操作方法

Asp.net mvc 3 Jquery Ajax Post未调用操作方法,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,} 我想使用ajax post调用actionmethod。这里是行动方法 function CreateModalDialogWindow(urlPath) { $.ajax({ url: '@Url.Action("Popup","Project")', type: 'POST', async: false, success: function (data) { debugger; $('#dialog').html(data)

}

我想使用ajax post调用actionmethod。这里是行动方法

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;

请让我知道上面代码中的错误。

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

  • 您有一些javascript错误
  • 您从不调用
    CreateModalDialogWindow
    函数
  • 在单击链接或表单提交时调用
    CreateModalDialogWindow
    ,但由于返回false,您忘记取消此按钮的默认操作
因此,首先在文档中调用此代码,看看它是否有效:

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

$(函数(){
$.ajax({
url:'@url.Action(“弹出”、“项目”),
键入:“POST”,
成功:功能(数据){
$('#dialog').html(数据).dialog({
自动打开:对,
宽度:400,
可调整大小:false,
莫代尔:对
});
}
});
});
现在,如果在控制器操作中放置断点,通常应该命中该断点。我建议您使用诸如FireBug之类的javascript调试工具,它将帮助您查看任何可能的javascript错误,并查看AJAX请求期间发送的确切请求/响应


您还将注意到,我已删除了
async:false
开关,因为这会在执行此请求期间对服务器进行同步调用,从而冻结web浏览器,因此您不再使用AJAX;在成功函数中?可能您也不想禁用cache:cache:falseDimitrov,即使我将此代码放在document.ready()中,也不会调用操作方法。但同样的代码在示例app.Dimitrov中运行良好,在firebug中调试后,我可以注意到它抛出了一个类似“405 method not allowed”的错误。我是否在url部分遗漏了任何内容。@Preben Huybrechts:谢谢Huybrechts。但它仍然不起作用。在firebug中,我可以看到它抛出了一个错误“405方法不允许”,谢谢大家,ajax帖子中的url是错误的。我已经改正了,现在很好用。谢谢:)
<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>