[javascript] JQuery Ajax Post 결과 500 내부 서버 오류 발생

이 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 게시물로 인한 서버 오류를 해결했습니다.


답변

여기 (또는 여기 )에서 HTTP 상태 코드를 찾을 수 있습니다 .이 오류는 다음을 알려줍니다.

“서버에 예상치 못한 상황이 발생하여 요청을 이행하지 못했습니다.”

서버를 디버그해야합니다.


답변

오늘도 똑같은 일이 발생합니다. Firefox 용 Firebug를 받기 전에 제안한대로 콘솔을 활성화하고 POST 응답을 미리 봅니다. 그 문제가 얼마나 어리석은 지 알아내는 데 도움이되었습니다. 내 행동은 int 유형의 값을 기대하고 있었고 문자열을 게시했습니다. (ASP.NET MVC2)