【问题标题】:Ajax Call returns status 0 in mvcAjax 调用在 mvc 中返回状态 0
【发布时间】:2018-01-01 04:48:45
【问题描述】:

我希望使用 ajax 将数据从我的视图发布到控制器。但是当我尝试使用下面的代码时,ajax 调用总是会触发状态代码为 0 的错误,并且不会将数据传递给控制器​​。

如何修改我的代码以将数据传递给控制器​​。任何帮助都提前感谢。

提交按钮代码

 <input class="btn btn-success" type="submit" value="Submit" onclick="GetData();" />                                                                                                                                              

Ajax 调用

   function GetData() {
        $.ajax({           
        url: '@Url.Action("CaptureUserData","Home")',
        data: {
            IdentityNo: "1", FullName: "test",Dob:"12", Gender: "m", 
            PhoneNo: "000", PhoneNo1: "000",
            Email: "ooo", Category: "000", Password: "000"
        }, 
        method: 'post',
        dataType: 'json',
        async: false,
        success: function (response) {
            alert('Success');
        },
        error: function (xhr, status, error) {                
            alert(xhr.status);
        }
    });
}

控制器

  [HttpPost]
    public ActionResult CaptureUserData(string IdentityNo, string FullName, 
    string Dob,string Gender, string PhoneNo, string PhoneNo1,                                            string Email, string Category, string Password                                          )
    {

        return Json(new { IdentityNo = IdentityNo });
    }

【问题讨论】:

  • 您正在使用JSON.stringify() 将传递的数据转换为string,因此它不会与您在控制器操作中定义的参数进行映射。删除JSON.stringify()
  • 使用 JsonRequestBehavior return Json(new { IdentityNo = IdentityNo }, JsonRequestBehavior.AllowGet);
  • 它仍然返回状态码 0 @mmushtaq
  • 用您所做的更改更新您的问题。
  • 尝试在没有 JSON.stringify() 的情况下从 ajax 请求中传递数据

标签: c# ajax asp.net-mvc asp.net-ajax


【解决方案1】:
 function GetData() {

     var frmdata = getJsonData();

       var json = $.toJSON(frmdata);

        $.ajax({           
        url: '@Url.Action("CaptureUserData","Home")',
        data: json,
        method: 'post',
        dataType: 'json',
        async: false,
        contentType: 'application/json;charset=utf-8',
        success: function (response) {
            alert('Success');
        },
        error: function (xhr, status, error) {                
            alert(xhr.status);
        }
    });
}


function getJsonData() {
   return {
            IdentityNo: "1", FullName: "test", Gender: "m", PhoneNo: "000", 
            PhoneNo1: "000",
            Email: "ooo", Category: "000", Password: "000"
        };
}

<input type=”button” name=”btnSubmit″ id=”btnSubmit″ value=”Submit” onClick=”GetData()”>

同时确认您是从同一个域发出请求

【讨论】:

    【解决方案2】:

    首先你需要指定是否要使用Json发布数据,然后你必须指定是否要使用Json返回数据。

    示例(发布不带 json 结构的数据并返回 json 结果): 您的控制器必须如下所示:

    [HttpPost]
        public JsonResult CaptureUserData(string IdentityNo, string FullName, 
        string Dob,string Gender, string PhoneNo, string PhoneNo1,                                            string Email, string Category, string Password                                          )
        {
            return Json(IdentityNo);
        }
    

    如您所见,返回类型必须是 JsonResult 而不是 ActionResult。

    ajax 调用必须如下所示:

    function GetData() {
            $.ajax({           
            url: '@Url.Action("CaptureUserData","Home")',
            data: {
                IdentityNo: "1", FullName: "test",Dob:"12", Gender: "m", 
                PhoneNo: "000", PhoneNo1: "000",
                Email: "ooo", Category: "000", Password: "000"
            }, 
            method: 'post',
            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
            success: function (response) {
                alert('Success');
            },
            error: function (xhr, status, error) {                
                alert(xhr.status);
            }
        });
    }
    

    你的内容类型必须是'application/x-www-form-urlencoded; charset=UTF-8' 这是默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      相关资源
      最近更新 更多