【问题标题】:404 response from JQuery call to MVC Action从 JQuery 调用到 MVC 操作的 404 响应
【发布时间】:2015-10-05 06:55:09
【问题描述】:

尝试从 JQuery 调用 MVC 操作时(使用 @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”中命名“Bookings”控制器,但这也不起作用。

我怀疑这是我缺少的一些非常基本的东西?

【问题讨论】:

  • 对我来说看起来像是一个错字。关闭)在哪里?
  • 我已经尝试了下面所说的所有方法,但仍然遇到相同的 404 错误。我一定在设置中做错了什么。我想我的下一步是学习 Ajax。当我弄清楚时会发布更新
  • 使用浏览器的本机开发工具(通常在 Windows PC 上通过按 F12 键访问)或 Firebug,观察 $.post 试图 POST 到的 URL。我很确定你会看到@Shyju 的建议是真的:你的 Razor 语法有错误。

标签: jquery asp.net-mvc


【解决方案1】:

我认为在脚本中创建操作方法的 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
});

【讨论】:

    【解决方案2】:

    你有一些问题..

    如果您正在执行post,您的操作需要具有[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);
    });
    

    【讨论】:

    • 我不得不使用 Chrome 开发者工具,这给了我 404 错误。有了上面的答案,我解决了我的问题。 (Internet Explorer 由于某种原因没有给我 404 错误)
    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 2010-10-04
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多