이 AJAX 게시물을 수행하려고하지만 어떤 이유로 서버 500 오류가 발생합니다. 컨트롤러에서 브레이크 포인트에 도달하는 것을 볼 수 있습니다. 그래서 문제는 콜백에있는 것 같습니다. 누군가?
$.ajax({
type: "POST",
url: "InlineNotes/Note.ashx?id=" + noteid,
data: "{}",
dataType: "json",
success: function(data) {
alert(data[1]);
},
error: function(data){
alert("fail");
}
});
다음은 반환되어야하는 문자열입니다.
{status:'200', text: 'Something'}
답변
중단 점을 통과 한 후 서버 메서드가 예외를 던지고 있다고 생각합니다. Firefox / Firebug 또는 IE8 개발자 도구를 사용하여 서버에서받는 실제 응답을 확인합니다. 예외가있는 경우 YSOD html이 표시되어 어디를 찾아야하는지 파악하는 데 도움이됩니다.
한 가지 더-데이터 속성은 “{}”가 아닌 {}이어야합니다. 전자는 빈 객체이고 후자는 쿼리 매개 변수로 유효하지 않은 문자열입니다. 더 좋은 방법은 데이터를 전달하지 않는 경우에는 그대로 두는 것입니다.
답변
누군가 codeigniter 프레임 워크를 사용하는 경우 csrf 보호 구성이 활성화되어 문제가 발생할 수 있습니다.
답변
이 문제가 발생했습니다. 제 경우에는 그 이유를 찾을 수 없었지만에서 POST
로 변경 GET
하면 문제 500 오류가 사라졌습니다!
type:'POST'
답변
Ajax 요청을 통해 데이터를 가져 오는 간단한 코드입니다.
$.ajax({
type: "POST",
url: "InlineNotes/Note.ashx",
data: '{"id":"' + noteid+'"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
alert(data.d);
},
error: function(data){
alert("fail");
}
});
답변
두 가지 해결책이 필요한 유사한 복합 오류가 발생했습니다. 제 경우에는 기술 스택이 MVC / ASP.NET / IIS / JQuery였습니다. 서버 측은 500 오류로 실패했으며 컨트롤러가 요청을 처리하기 전에 발생하여 서버 측에서 디버그를 어렵게 만듭니다.
다음 클라이언트 측 디버그를 통해 서버 오류를 확인할 수있었습니다.
$ .ajax 오류 콜백에서 오류 세부 정보를 콘솔에 표시합니다.
error: (error) => {
console.log(JSON.stringify(error));
}
적어도 이것은 초기 서버 오류를 볼 수있게 해주었습니다.
“JSON 요청이 너무 커서 직렬화 할 수 없습니다.”
이것은 클라이언트 web.config에서 해결되었습니다.
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
그러나 요청은 여전히 실패했습니다. 하지만 이번에는 서버 측에서 디버그 할 수있는 다른 오류가 발생했습니다.
“엔터티가 너무 큼 요청”
이는 web.config 서비스에 다음을 추가하여 해결되었습니다.
<configuration>
…
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="524288">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
구성 값은 추가 조정이 필요할 수 있지만 최소한 ajax 게시물로 인한 서버 오류를 해결했습니다.