代码之家  ›  专栏  ›  技术社区  ›  Vijunav Vastivch

Ajax Jquery在MVC中使用ActionLink后不返回URL

  •  0
  • Vijunav Vastivch  · 技术社区  · 9 年前

    以下是单击ActionLink时我的ActionResult

     public PartialViewResult ViewHit(string id, string recordid,string statusSelect,string statusHitSelect)
    {
        //some code here....
    }
    

    点击按钮后要发布的操作链接:

    public ActionResult SaveUpdate(String statusSelect, string statusHitSelect)
     {
    
         return PartialView("ViewHitList");
     }
    

    这是按钮:

    <input type="button" value="Save" id="savehit"/>
    

    这是我的Ajax:

     $("#savehit").on('click', function () {
    
                //alert("Button was click!");
                $.ajax({
                    type: "post",
                    contentType: "application/json; charset=utf-8",
                    //url: "SelectUpdate?statusSelect=" + statusSelect + '&statusHitSelect=' + statusHitSelect,
                    url: "SaveUpdate",
                    data: "{'statusSelect':'" + statusSelect + "','statusHitSelect':'" + statusHitSelect + "'}",
                    //data:null,
                    success: function (response) {
                        if (response != null && response.success) {
                            //InformationMessageSuccess(response.responseText);
                            alert("success");
                        } else {
                            // DoSomethingElse()
                            //InformationMessageFailed(response.responseText);
                            alert("not success");
                        }
                    },
    
                });
    
            });
    

    问题是,当我使用调试模式点击save按钮时,调用的ActionResult是 ViewHit 而不是 SaveUpdate

    我想知道为什么会这样?

    任何好主意都将受到高度赞赏。

    3 回复  |  直到 9 年前
        1
  •  1
  •   Jeric Cruz    9 年前

    您可以尝试使用 event.preventDefault()

    $("#savehit").on('click', function (event) {
        event.preventDefault();
        //alert("Button was click!");
        $.ajax({
            type: "post",
            contentType: "application/json; charset=utf-8",
            //url: "SelectUpdate?statusSelect=" + statusSelect + '&statusHitSelect=' + statusHitSelect,
            url: "@Url.Action("SaveUpdate", "Home")",
            data: "{'statusSelect':'" + statusSelect + "','statusHitSelect':'" + statusHitSelect + "'}",
            //data:null,
            success: function (response) {
                if (response != null && response.success) {
                    //InformationMessageSuccess(response.responseText);
                    alert("success");
                } else {
                    // DoSomethingElse()
                    //InformationMessageFailed(response.responseText);
                    alert("not success");
                }
            }
        });
    });
    
        2
  •  1
  •   Unni Krishnan    9 年前
    1. 将[HttpPost]属性添加到SaveUpdate操作中
    2. 在ajax中,将URL更改为URL:“ControllerName/SaveUpdate”
        3
  •  1
  •   sina_Islam    9 年前

    SaveUpdate不是post类型。请在控制器方法的顶部添加属性[HttpPost],如

    [HttpPost]
    public ActionResult SaveUpdate(String statusSelect, string statusHitSelect)
     {
    
         return PartialView("ViewHitList");
     }
    

    我更改了ajax调用,如bellow,并将其更改为SaveUpdate方法。下面是ajax调用。

      $(document).ready(function () {
            $("#savehit").on('click', function () {
                var statusSelectData="statusSelect";
                var statusHitSelectData="statusHitSelect";
                var postData = {
                    statusSelect: statusSelectData,
                    statusHitSelect: statusHitSelectData
                }
                //alert("Button was click!");
                $.ajax({
                    type: "POST",
                    url: "/Home/SaveUpdate",
                    data: postData,
                    //data:null,
                    success: function (response) {
                        if (response != null && response.success) {
                            //InformationMessageSuccess(response.responseText);
                            alert("success");
                        } else {
                            // DoSomethingElse()
                            //InformationMessageFailed(response.responseText);
                            alert("not success");
                        }
                    },
    
                });
    
            });
        });