저도 같은 문제의 종류를 가지고있다. 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)));
것은 나에게 오류의 무리를 준.
로컬로 작업했지만 (JSON에서 구문 오류가 있지만) 테스트 서버에서 작동하지 않는 다음 코드를 JsonResult와 시도했습니다.
return Json(new { success = false, responseJSON = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ModelState.Values.SelectMany(v => v.Errors)) }, JsonRequestBehavior.AllowGet);
이 (위) 내가 MVC 컨트롤러에 양식 모델을 제출하는 AJAX 요청을 사용하는 경우 최근의 테스트입니다. 나는 그것이 크로스 도메인으로 가고 있기 때문에 그것이라고 읽었다. 그러나 그것은 의미가 없다.
웹 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.
나는 그것이 다른 방식으로 작동하지 않는 이유를 알지 못합니다. 누군가 응답을 보내면 알려주세요.
첫 번째 방법으로 작업 했어야했기 때문에 나에게이 작업은 해결되었습니다.
UPDATE : MVC의 컨트롤러 - 원래 코드를 사용하고
Response.TrySkipIisCustomErrors = true;
가 responseJSON 표시했다 덧붙였다.
대신에'jqXHR'에서 무엇을 얻을 수 있습니까? – Jasen
안녕하세요 Jasen, 답장을 보내 주셔서 감사합니다! 개발 컴퓨터에서는 json 문자열을 사용하여 reponseText뿐만 아니라 responseJSON 배열을 올바르게 반환하지만 원격 컴퓨터에서 호출 될 때 responseJSON 객체가 없으며 null을 반환하고 responseText에는 "잘못된 요청 메시지"만 포함됩니다. 응답 상태 코드에 400으로 서명 했으므로 결과의 그림으로 질문을 편집했습니다 ... –
콘솔에 오류가 있습니까? 그것은 CORS와 관련이 있습니까? "Access-Control -Origin ...."과 같은 콘솔의 모든 것 – Developer