반응형
Jquery Ajax, mvc.net 컨트롤러에서 성공 / 오류 반환
오류 메시지에 회신 할 때와 성공 메시지를 보낼 때를 제어하고 싶지만 항상 오류 메시지가 나타납니다.
내가하려는 것은 다음과 같습니다.
$.ajax({
type: "POST",
data: formData,
url: "/Forms/GetJobData",
dataType: 'json',
contentType: false,
processData: false,
success: function (response) {
alert("success!")
},
error: function (response) {
alert("error") // I'm always get this.
}
});
제어 장치:
[HttpPost]
public ActionResult GetJobData(Jobs jobData)
{
var mimeType = jobData.File.ContentType;
var isFileSupported = AllowedMimeTypes(mimeType);
if (!isFileSupported){
// Error
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Content("The attached file is not supported", MediaTypeNames.Text.Plain);
}
else
{
// Success
Response.StatusCode = (int)HttpStatusCode.OK;
return Content("Message sent!", MediaTypeNames.Text.Plain);
}
}
$.ajax({
type: "POST",
data: formData,
url: "/Forms/GetJobData",
dataType: 'json',
contentType: false,
processData: false,
success: function (response) {
if (response.success) {
alert(response.responseText);
} else {
// DoSomethingElse()
alert(response.responseText);
}
},
error: function (response) {
alert("error!"); //
}
});
제어 장치:
[HttpPost]
public ActionResult GetJobData(Jobs jobData)
{
var mimeType = jobData.File.ContentType;
var isFileSupported = IsFileSupported(mimeType);
if (!isFileSupported){
// Send "false"
return Json(new { success = false, responseText = "The attached file is not supported." }, JsonRequestBehavior.AllowGet);
}
else
{
// Send "Success"
return Json(new { success = true, responseText= "Your message successfuly sent!"}, JsonRequestBehavior.AllowGet);
}
}
---보충:---
기본적으로 다음과 같이 여러 매개 변수를 보낼 수 있습니다.
제어 장치:
return Json(new {
success = true,
Name = model.Name,
Phone = model.Phone,
Email = model.Email
},
JsonRequestBehavior.AllowGet);
HTML :
<script>
$.ajax({
type: "POST",
url: '@Url.Action("GetData")',
contentType: 'application/json; charset=utf-8',
success: function (response) {
if(response.success){
console.log(response.Name);
console.log(response.Phone);
console.log(response.Email);
}
},
error: function (response) {
alert("error!");
}
});
다음과 같이 Json
대신 클래스를 사용하십시오 Content
.
// When I want to return an error:
if (!isFileSupported)
{
Response.StatusCode = (int) HttpStatusCode.BadRequest;
return Json("The attached file is not supported", MediaTypeNames.Text.Plain);
}
else
{
// When I want to return sucess:
Response.StatusCode = (int)HttpStatusCode.OK;
return Json("Message sent!", MediaTypeNames.Text.Plain);
}
contentType도 설정하십시오.
contentType: 'application/json; charset=utf-8',
서버에서 jQuery의 Ajax 호출로 값을 반환 할 때 아래 코드를 사용하여 서버 오류를 나타낼 수도 있습니다.
return StatusCode(500, "My error");
또는
return StatusCode((int)HttpStatusCode.InternalServerError, "My error");
또는
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return Json(new { responseText = "my error" });
Http 성공 코드 (예 : 200 [OK]) 이외의 코드 error:
는 클라이언트 측 (ajax)에서 함수를 트리거합니다 .
다음과 같은 ajax 호출을 할 수 있습니다.
$.ajax({
type: "POST",
url: "/General/ContactRequestPartial",
data: {
HashId: id
},
success: function (response) {
console.log("Custom message : " + response.responseText);
}, //Is Called when Status Code is 200[OK] or other Http success code
error: function (jqXHR, textStatus, errorThrown) {
console.log("Custom error : " + jqXHR.responseText + " Status: " + textStatus + " Http error:" + errorThrown);
}, //Is Called when Status Code is 500[InternalServerError] or other Http Error code
})
또한 다음과 같이 jQuery 측에서 다른 HTTP 오류를 처리 할 수 있습니다.
$.ajax({
type: "POST",
url: "/General/ContactRequestPartial",
data: {
HashId: id
},
statusCode: {
500: function (jqXHR, textStatus, errorThrown) {
console.log("Custom error : " + jqXHR.responseText + " Status: " + textStatus + " Http error:" + errorThrown);
501: function (jqXHR, textStatus, errorThrown) {
console.log("Custom error : " + jqXHR.responseText + " Status: " + textStatus + " Http error:" + errorThrown);
}
})
statusCode:
서버에서 반환하는 다른 상태 코드에 대해 다른 함수를 호출하려는 경우 유용합니다.
You can see list of different Http Status codes here:Wikipedia
Additional resources:
- Returning Server-Side Errors from AJAX Calls
- Returning a JsonResult within the Error function of JQuery Ajax
- Handling Ajax errors with jQuery
ReferenceURL : https://stackoverflow.com/questions/26605065/jquery-ajax-return-success-error-from-mvc-net-controller
반응형
'program tip' 카테고리의 다른 글
node.js string.replace가 작동하지 않습니까? (0) | 2021.01.10 |
---|---|
momentjs를 사용하여 날짜를 epoch로 변환 한 다음 다시 날짜로 변환 (0) | 2021.01.10 |
jquery : id에 특정 패턴이있는 요소 찾기 (0) | 2021.01.09 |
실제 TCP 및 UDP의 예는 무엇입니까? (0) | 2021.01.09 |
패턴과 일치하지 않는 파일을 나열 하시겠습니까? (0) | 2021.01.09 |