加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.net MVC – Jquery $.ajax错误回调没有返回responseJSON

发布时间:2020-12-16 04:18:18 所属栏目:asp.Net 来源:网络整理
导读:我有下面的代码,在开发机器上工作正常,但从远程浏览器调用时却没有… $.ajax({ type: 'POST',url: '@Url.Action("Action","Controller")',data: { id: id },dataType: 'json',async: true,success: function (data) { },error: function (jqXHR,status,err)
我有下面的代码,在开发机器上工作正常,但从远程浏览器调用时却没有…
$.ajax({
  type: 'POST',url: '@Url.Action("Action","Controller")',data: { id: id },dataType: 'json',async: true,success: function (data) {
  },error: function (jqXHR,status,err) {
    var result = jqXHR.responseJSON;
  }
});

jqXHR.responseJSON对象在从localhost调用时起作用,但在从远程计算机调用时不起作用,它作为未定义返回…
有人能帮助我吗?
提前致谢!

解决方法

我遇到过同样的问题.
使用localhost在本地计算机上进行测试时,ResponseJSON将被填充.
当我将项目上传到测试服务器并进行测试时,我的responseJSON未定义,而responseTEXT只是给出了我发送的状态描述:
(这是一个JSONResult,但我已经将它作为ActionResult完成了)
Response.StatusCode = 400;
Response.StatusDescription = "Bad Request - Model State is Invalid";
return Json(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ModelState.Values.SelectMany(v => v.Errors)),JsonRequestBehavior.AllowGet);

而对于ActionResult,我也特别尝试过:

return new HttpStatusCodeResult(400,new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ModelState.Values.SelectMany(v => v.Errors)));

这给了我一堆错误.

我尝试使用JsonResult下面的代码,它在本地工作(但我在JSON中有一个语法错误),但在测试服务器上没有工作.

return Json(new { success = false,responseJSON = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ModelState.Values.SelectMany(v => v.Errors)) },JsonRequestBehavior.AllowGet);

当我使用AJAX请求将表单模型提交给MVC控制器时,这是最近的测试(上面).我读到这是因为它是跨域的,但这没有任何意义.

我创建了一个Web API控制器并将方法信息放在那里.这是因为我想使用HttpReponseMessage,我认为这是一个WebAPI类型.
在获得模型和json以及所有内容协同工作后,我测试并猜测了什么?

当我在WebAPI中使用HttpResponseMessage作为返回类型并返回如下:

return Request.CreateResponse(HttpStatusCode.BadRequest,new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ModelState.Values.SelectMany(v => v.Errors)));

responseJSON和responseText都正确填充.

我不知道为什么它不起作用,如果有人对此有回应请告诉我们.

对我来说,这是一个解决方法,因为我觉得它应该是第一种方式.

更新:
将ORIGINAL代码与MVC控制器一起使用并添加

Response.TrySkipIisCustomErrors = true;

使responseJSON出现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读