我试图从jQuery代码调用控制器动作方法,但不知何故它无法正常工作。以下是来自javascript的代码:
$(document).ready(function() {
$("#sendOTPSubmit").click(function() {
$.ajax({
url: 'Controllers/RegisterSurfaceController/SendOTP',
success: function(data) {
alert(data);
},
statusCode: {
404: function(content) {
alert('cannot find resource');
},
500: function(content) {
alert('internal server error');
}
},
error: function(req, status, errorObj) {
// handle status === "timeout"
// handle other errors
}
});
});
});
[HttpPost]
public JsonResult SendOTP()
{
CardHolder user = new CardHolder();
return Json("");
}
我收到以下错误:
http://localhost:49289/Controllers/RegisterSurfaceController/SendOTP 404(未找到)
答案 0 :(得分:2)
首先,您的操作有[HttpPost]
属性,因此您需要将type: 'POST'
添加到$.ajax
选项中。
此外,除非您已经定义了名为'控制器'你不应该在URL中需要该目录,而且你不需要' Controller'后缀也是。试试吧:url: '/RegisterSurface/SendOTP',
,就像这样:
$.ajax({
type: 'POST',
url: 'RegisterSurface/SendOTP',
success: function (data) { alert(data); },
statusCode: {
404: function (content) { alert('cannot find resource'); },
500: function (content) { alert('internal server error'); }
},
error: function (req, status, errorObj) {
// handle status === "timeout"
// handle other errors
}
});
另请注意,如果上述代码可以在Razor范围内运行,那么您可以使用Url.Action
帮助程序为您生成URL:
url: '@Url.Action("SendOTP", "RegisterSurface")',