Ajax - 500内部服务器错误

Nic*_*ckF 25 javascript ajax xmlhttprequest

我正在努力为这个项目学习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;
  } 
Run Code Online (Sandbox Code Playgroud)

如果需要更多代码,请告诉我.

Jon*_*ust 51

500 (internal server error)意味着服务器端出现了问题.这可能是几件事,但我首先要验证URL和参数是否正确.此外,请确保处理请求的任何内容都将期望请求作为GET而不是POST.

了解更多信息的一个有用方法是使用像Fiddler这样的工具,它可以让您查看所有HTTP请求和响应,这样您就可以准确地看到您正在发送的内容以及服务器正在响应的内容.

如果您没有令人信服的理由编写自己的Ajax代码,那么使用为您处理Ajax交互的库会更好. jQuery是一种选择.


Ema*_*oun 12

我认为你的返回字符串数据很长.所以JSON格式已经损坏.您应该以这种方式更改JSON数据的最大大小:

打开Web.Config文件并将这些行粘贴到配置部分

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="50000000"/>
    </webServices>
  </scripting>
</system.web.extensions>
Run Code Online (Sandbox Code Playgroud)


小智 6

这可能是SOAP调用的不正确参数; 查看'data:'json部分中参数的格式 - 这是您传递的有效负载 - 以JSON格式包装的参数和数据.

谷歌Chrome的调试工具栏有一些很好的工具来验证参数和查看错误消息 - 例如,从控制台选项卡开始,然后单击错误的URL或单击网络选项卡.您将需要查看邮件的标题,响应等...