Ajax Jquery 不是 return URL 在 MVC 中使用 ActionLink 之后

Ajax Jquery not return the URL after using ActionLink in MVC

我得到了一个场景:

这是单击 ActionLink 时我的 ActionResult

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

单击按钮后 post 的 ActionLink:

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");
                    }
                },

            });

        });

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

我想知道为什么会这样?

非常感谢任何好主意。

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

[HttpPost]
public ActionResult SaveUpdate(String statusSelect, string statusHitSelect)
 {

     return PartialView("ViewHitList");
 }

我已经像下面那样更改了 ajax 调用及其 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");
                    }
                },

            });

        });
    });

您可以尝试使用 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");
            }
        }
    });
});
  1. 将 [HttpPost] 属性添加到 SaveUpdate 操作
  2. 在ajax中,将URL改为url:"ControllerName/SaveUpdate"
  3. 由于您希望将布尔结果 (JSON) 作为 ajax 响应返回到您的页面,只需 return 一个 jsonResult (true/false)