当通过AJAX调用时,控制器操作不会执行
Controller action does not execute when called via AJAX
我有两个名为Contact和About的HttpPost控制器操作。我有一个JavaScript函数,它将把相关的表单属性(其操作、方法等)转换为AJAX请求,然后对返回值/响应进行处理。
然而,当我调用JavaScript函数时,只有JavaScript部分运行,并且没有调用MVC服务器端代码。
有人能帮忙吗?
联系
[HttpPost]
public string Contact(string id)
{
return "OK";
}
关于
[HttpPost]
public string About(string id)
{
return "OK2";
}
脚本
$('form').submit(function () {
if ($(this).valid()) {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
$('#myForm').html('');
$('#result').html(result);
}
});
}
return false;
});
});
假设以下内容,因为问题没有提到细节。。。
我想你的页面结构是这样的:
<body>
<form action="/Home/About" method="POST">
<input type="hidden" name="id" value="1">
<button type="submit">About</button>
</form> |
<form action="/Home/Contact" method="POST">
<input type="hidden" name="id" value="2">
<button type="submit">Contact</button>
</form>
<div id="result"></div>
</body>
或
<body>
<form action="/Home/About/?id=1" method="POST">
<button type="submit">About</button>
</form> |
<form action="/Home/Contact/?id=2" method="POST">
<button type="submit">Contact</button>
</form>
<div id="result"></div>
</body>
如果是这样的话,它应该会起作用。
请注意,每个表单都包含一个名为id的输入元素,或者id作为querystring附加在表单action属性中。这一点非常重要,因为MVC路由和模型绑定依赖于此,因为您的控制器操作需要一个id参数。即CCD_ 1。
还要确保您的操作是正确的形式,即如果您使用默认操作,请确保控制器名称是路由的一部分(即,如果您的控制器名为HomeController,并且您的操作为联系),MVC将期望此特定路由(如果使用包罗万象的路由:/Home/Contact。如果您正在使用自定义路由条目,则忽略此项。
服务器端操作可能未命中的另一个原因是由于您的表单方法。您的示例预期为POST,但如果您的表单方法是PUT或GET或者其他什么,它也不会命中它。
如果你坚持这三件事,你可能不会有问题。
相关文章:
- 当通过AJAX调用时,控制器操作不会执行
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- 检查是否存在任意控制器/操作
- AngularJS-独立的控制器和DOM操作
- RubyonRails环境控制器操作JavaScript响应
- 控制器操作的路由问题
- EmberJs-将所有来自子组件的操作路由到父组件,再路由到父控制器
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 从填充了 AJAX 的下拉列表中获取控制器的操作方法中的值
- ASP.Net MVC 脚本无法使用控制器的默认操作 URL.使用控制器/操作 URL 也是如此
- 从 javascript 获取 MVC 控制器中的操作参数时出错
- 在 AJAX 调用的 zend 控制器操作中正确设置会话
- 将 DOM 操作与 Angular 控制器分离 - 需要最佳实践
- 有没有办法从 javascript 函数调用控制器操作
- 如何使用 Minitest 触发 JS 控制器操作
- MVC 下拉列表更改事件未正确调用控制器中的操作
- Yii2中的Ajax+控制器操作
- 如何在Javascript事件上触发rails控制器操作
- 操作映射触发控制器中的错误方法
- 错误操作控制器::在轨道中呈现部分单击时返回link_to未知格式