我正在尝试为这个工作中的项目学习AJAX。我有一个网站加载病人正在服用的药物。
我递归调用此AJAX函数,以便它将附加一个包含单种药物和7天历史记录的新表。我在使代码在FF和IE中执行时遇到问题。在chrome中效果很好。我有显示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和参数是否正确。另外,请确保处理请求的任何人都希望请求是GET而不是POST。
500 (internal server error)
了解更多情况的一种有用方法是使用Fiddler之类的工具,该工具可让您查看所有HTTP请求和响应,从而可以准确查看正在发送的内容和服务器正在响应的内容。
如果没有令人信服的理由来编写自己的Ajax代码,那么最好使用一个为您处理Ajax交互的库。 jQuery是一种选择。