ASP.NET与JQuery AJAX导致“错误请求”错误

时间:2014-02-19 16:40:12

标签: jquery asp.net ajax

当我尝试使用以下JQuery / AJAX将HTTP发布到“Home”控制器时,我收到“错误请求”错误。有没有人看到原因?

这几乎是从这里获得的示例的副本,除了大大简化:JQUERY ajax passing value from MVC View to Controller。它似乎没有找到控制器,这让我感到困惑 - 我已经摆弄了很多,并没有成功。

视图中的按钮抛出“错误请求”错误,但未到达控制器:

<td> <input type="submit" class="btn-default" name="submit" value="Start Simulating-Jquery" id="btnSaveComments" />
            <script>     $('#btnSaveComments').click(function () {
                    $.ajax({
                        url: '<%:Url.Action("SaveComments")%>',
                        type: "post",
                        cache: false,
                        success: function (savingStatus) {
                            alert("save")
                        },
                        error: function (xhr, ajaxOptions, thrownError) {
                            alert(xhr.toString())
                            alert(ajaxOptions.toString())
                            alert(thrownError.toString())
                        }
                    });
                });
            </script>
        </td>

执行视图中按钮的示例:

                     @Ajax.ActionLink("ActonLinkTest", "SaveComments", "Home",
                                new AjaxOptions
                                {
                                    HttpMethod = "POST"
                                }
                            )

Controller(Home):

    [HttpPost]
    public ActionResult SaveComments()
    {
        return new EmptyResult();
    }

编辑:这也失败了。

查看:

<td>
            <input type="submit" class="btn-default" name="submit" value="Start Simulating-Jquery #2" id="btnSaveComments2" />
            <script>
                $('#btnSaveComments2').click(function () {
                    var comments = 'a';
                    var selectedId = '1';

                    $.ajax({
                        url: '<%: Url.Action("SaveComments")%>',
                        data: { 'id': selectedId, 'comments': comments },
                        type: "post",
                        cache: false,
                        success: function (savingStatus) {

                        },
                        error: function (xhr, ajaxOptions, thrownError) {
                            alert('failed')//$('#lblCommentsNotification').text("Error encountered while saving the comments.");
                        }
                    });
                });
            </script>
        </td>

用控制器中的这个替换以前的savecomments函数:

 [HttpPost]
    public ActionResult SaveComments(int id, string comments)
    {
        return new EmptyResult();
    }

2 个答案:

答案 0 :(得分:1)

尝试这样

var id = 1;
var comments = 'abc';
    $.ajax({
        data: { 'id': id, 'comments': comments },
        url: '/Home/SaveComments1',
        cache: false,
        success: function (savingStatus) {
            alert("save")
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.toString())
            alert(ajaxOptions.toString())
            alert(thrownError.toString())
        }
    });
});

答案 1 :(得分:0)

请尝试:

url: '<%= Url.Action("SaveComments") %>',

我认为你的内联标签错误。