programing

Ajax - 500 내부 서버 오류

javamemo 2023. 2. 24. 13:12
반응형

Ajax - 500 내부 서버 오류

저는 직장에서 이 프로젝트를 위해 AJAX를 배우려고 합니다.환자가 복용하는 약을 로드하는 사이트가 있어요.

저는 이 AJAX 함수를 재귀적으로 업이라고 부릅니다.그것은 단일 약물과 7일치 기록을 포함한 새로운 테이블을 추가할 것입니다.FF와 IE에서 실행할 코드를 얻는 데 문제가 있습니다.크롬으로 완벽하게 작동합니다.xmlhttp.status를 표시하는 경보가 발생했는데 다음과 같이 표시됩니다.

xmlhttp.status==500(내부 서버 오류).

모든 재귀에 코멘트를 달아, 이 코드로 좁혀졌습니다(x는 약의 수를 추적하고 있기 때문에, 언제 멈출지 알 수 있습니다).

function LoadMeds()


  if ( x == MaxMedCount )
  {
      document.getElementById("the_day").value = parseInt(document.getElementById("the_day").value)+7; 
  }
  if ( x == (MaxMedCount - 1) )
  {
      document.getElementById("x").value = x + 1;
      show();
  }
  else
  { 

      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function()
      {
          try 
          {      
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
              {     
                  var div = document.createElement('div');
                  div.innerHTML= xmlhttp.responseText;
                  document.getElementById('MedTable').appendChild(div);
                  document.getElementById("the_med_").value = the_med_;

              }

          }
          catch(e)
          {
              alert("Error");  
          }
      }
      xmlhttp.open("GET","URL with variables passed",true);
      xmlhttp.send();     
      document.getElementById("x").value = x + 1;
  } 

더 필요한 코드가 있으면 알려주세요.

500 (internal server error)서버 측에서 뭔가 잘못되었다는 것을 의미합니다.여러 가지가 있을 수 있지만, 우선 URL과 파라미터가 맞는지 확인하겠습니다.또한 요구를 처리하는 대상이 POST가 아닌 GET으로 요구를 상정하고 있는지 확인합니다.

Fiddler와 같은 도구를 사용하여 모든 HTTP 요청과 응답을 감시하고 사용자가 보내는 내용과 서버가 응답하는 내용을 정확하게 볼 수 있도록 하는 유용한 방법은 Fiddler와 같은 도구를 사용하는 것입니다.

Ajax 코드를 직접 작성해야 하는 특별한 이유가 없다면 Ajax 상호작용을 처리하는 라이브러리를 사용하는 것이 좋습니다.jQuery도 옵션 중 하나입니다.

반송 문자열 데이터가 매우 길어서 JSON 형식이 손상되었습니다.JSON 데이터의 최대 사이즈는 다음과 같이 변경해야 합니다.

웹을 엽니다.컨피규레이션파일을 작성하고, 이러한 행을 설정 섹션에 붙여넣습니다.

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="50000000"/>
    </webServices>
  </scripting>
</system.web.extensions>

이것은 SOAP 호출에 대한 잘못된 매개 변수일 수 있습니다. 'data:' json 섹션의 매개 변수 형식을 확인하십시오. 이것은 전달 중인 payload입니다. 매개 변수와 데이터는 JSON 형식으로 래핑됩니다.

Google Chrome의 디버깅 툴바에는 파라미터를 확인하고 오류 메시지를 확인할 수 있는 몇 가지 유용한 도구가 있습니다. 예를 들어 콘솔 탭부터 시작하여 오류 URL을 클릭하거나 네트워크 탭을 클릭합니다.메시지 머리글, 응답 등을 볼 수 있습니다.

줄의 을 풉니다.[System.Web.Script.Services.ScriptService]

서비스가 정상적으로 동작하기 시작합니다.

[WebService(Namespace = "http://tempuri.org/")]


 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]


스크립트에서 ASP를 사용하여 이 웹 서비스를 호출할 수 있습니다.NET AJAX, 다음 행을 주석 해제합니다.

[System.Web.Script.Services.ScriptService]

public class WebService : System.Web.Services.WebService 
{

안고 때 로 ASP가 리모트로 할 때 스택트레이스 하지 않는을 기억했습니다.이것은, 「ASP」의 「ASP」/「ASP」를 할 수 .이것은, 테스트 할 수 없는 것과 같습니다..asmx리모트로 하고, 그 높은 「 assembly」가되었을 경우, 「Could not load file or assembly」가 표시되거나, 「Could not load file or assembly or 」'Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 입니다.

서버에 로그인하여 거기에서 디버깅합니다.

한다behavior: JsonRequestBehavior.AllowGet ★★★★★★★★★★★★★★★★」Json ReturnC#로

이렇게 루트의 위치를 변경하는 오류를 수정했습니다.php, 예를 들어 다음과 같은 것이 있습니다.

Route::resource('Mensajes', 'MensajeriaController');
Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');

그리고 이렇게 표현합니다.

Route::get('Mensajes/modificar', 'MensajeriaController@modificarEstado');
Route::resource('Mensajes', 'MensajeriaController');

저도 같은 실수를 했어요.백엔드 방법이 다른 json 데이터를 예상한 것이 원인인 것으로 나타났습니다.내 Ajax 통화에서 나는 다음과 같은 말을 들었다.

$.ajax({
        async: false,
        type: "POST",
        url: "http://13.82.13.196/api.aspx/PostAjax",
        data: '{"url":"test"}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
    });

WebMethod에서는 C# 백엔드 코드 내에서 다음과 같이 엔드포인트를 선언하고 있습니다.

public static string PostAjax(AjaxSettings settings)

AjaxSettings가 선언된 위치:

public class AjaxSettings
{
    public string url { get; set; }
}

문제는 ajax 콜과 백엔드 엔드 엔드 엔드 사이의 매핑이 동일하지 않다는 것이었습니다.Ajax 콜을 다음과 같이 바꾸자마자 모든 것이 잘 작동했습니다!

var data ='{"url":"test"}';    
$.ajax({
    async: false,
    type: "POST",
    url: "http://13.82.13.196/api.aspx/PostAjax",
    data: '{"settings":'+data+'}',
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});

메서드 시그니처에 정확하게 일치시키기 위해 Ajax 콜 내의 데이터 변수를 변경해야 했습니다.

언급URL : https://stackoverflow.com/questions/4789613/ajax-500-internal-server-error

반응형