尝试从JQuery调用MVC Action时(使用@ Url.Action)我收到404错误
$(function () {
$('#propertyCombo').change(function () {
var id = $('#propertyCombo option:selected').val();
alert(id);
$.post('@Url.Action("PropertyHasChanged", "Bookings"', null, function (data) {
// handle the server response here
}).done(function () {
alert("success");
}).fail(function (jqXHR, exception) {
alert(exception);
alert(jqXHR.status);
alert(jqXHR.responseText);
}).error
});
控制器代码是
public class BookingsController : BaseController
{
private ApplicationDbContext db = new ApplicationDbContext();
public ActionResult PropertyHasChanged()
{
return null;
}
控制器中的断点永远不会被击中,并返回404错误。我尝试在JQuery“BookingsController”中命名“预订”控制器,但这也没有用。
我怀疑这是我遗失的非常基本的东西?
答案 0 :(得分:2)
我认为在脚本中创建action方法的url存在问题。从您发布的代码中,您错过了Url.Action
方法的结束括号。
以下代码应该可以正常工作。
var myUrl='@Url.Action("PropertyHasChanged", "Bookings")';
alert(myUrl);
$.post(myUrl, function (data) {
alert("response received from server");
// handle the server response here
});
答案 1 :(得分:1)
如果您正在执行[HttpPost]
,则您的操作需要具有[HttpPost]
public ActionResult PropertyHasChanged()
{
return Content("Success!");
}
属性
$.post()
我知道$.ajax()
是简写,但使用$.ajax({
url: "@Url.Action("PropertyHasChanged","Bookings")",
type: "POST",
data: {id: id}
}).done(function(data){
// handle the server response here
alert(data);
}).fail(function (jqXHR, exception) {
alert(exception);
alert(jqXHR.status);
alert(jqXHR.responseText);
});
版本,这样您就可以看到更轻松的传递方式
public static void main(String [] args) {
for(int i = 0, j = 0; i < 10; i++, j+=2) {
System.out.println(i);
System.out.println(j);
}
}