1. ホーム
  2. javascript

[解決済み] Ajax - 500 Internal Server Error

2022-02-07 02:35:05

質問

私は仕事でこのプロジェクトのためにAJAXを学ぼうとしています。私は、患者が服用している薬をロードするサイトを持っています。

このAJAX関数を再帰的に呼び出し、1つの薬と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としてリクエストを期待していることを確認します。

何が起こっているのかを知るための有効な方法のひとつは、次のようなツールを使うことです。 フィドラー これは、すべてのHTTPリクエストとレスポンスを監視し、あなたが送信しているものとサーバーが応答しているものを正確に把握することができるものです。

もし、自分でAjaxのコードを書くやむを得ない理由がなければ、Ajaxのインタラクションを処理してくれるライブラリを使うほうがはるかによいでしょう。 jQuery は一つの選択肢です。