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/