AJAX,PHP,MYSQL - innerHTML不工作&没有任何替代品

时间:2013-06-26 03:30:09

标签: php mysql ajax dom innerhtml

我是菜鸟,我想让这个脚本正常工作。它适用于除IE以外的所有浏览器。我已经在stackoverflow上尝试了大多数解决方案,但它们都不适用于我。我在某个地方做了一些孩子气的错误,我无法发现。请求你的帮助。

另外只是为了让你知道使用appendchild的DOM Objects格式对我来说可能无法100%正常工作,因为这个脚本基本上从下拉列表中传递值,显示从1到10的数字,并根据它提取的数字相应的图表。因此,如果我正在查看图表1,那么我可以继续选择下拉列表以查看图表3。但是如果我们使用appendchild属性,它只允许我通过选择1到10来查看其中一个图表,除非我刷新页面,否则它不起作用。因此,除非使用deletechild,否则我认为它不起作用,只是我的猜测。因此,我已经评论了该部分,我正在使用内部HTML的旧方法。

这是我的JS功能。

function showUser(str) {

debugger;

var xmlhttp = GetXmlHttpObject("Browser does not support HTTP Request");

if (str=="") {
  document.getElementById("pairname").innerHTML="";
  return;
  } 

  /* <-- I HAVE ALREADY COMMENTED THIS OUT & am using a more robust function for this.
  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() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("pairname").innerHTML=xmlhttp.responseText;

    //AS YOU CAN SEE THE ALTERNATIVE SOLUTION OF USING DOM OBJECTS HAS BEEN COMMENTED OUT.. SINCE THIS IS ALSO NOT WORKING IN IE FOR ME.
    //var wrappingElement = document.createElement("div");
    //wrappingElement.innerHTML = xmlhttp.responseText;
    //document.getElementById('pairname').appendChild(wrappingElement);
    }
  }
xmlhttp.open("GET","getimgdetails.php?q="+str,true);
xmlhttp.send();
}

function GetXmlHttpObject(errorMessage) {
    var r = false;
    try { r = new XMLHttpRequest(); }// Opera 8.0+, Firefox, Safari
    catch(e) {
        // Internet Explorer Browsers
        try { r = new ActiveXObject("Msxml2.XMLHTTP"); }// older IE
        catch(e) {
            try { r = new ActiveXObject("Microsoft.XMLHTTP"); }// IE 5+
            catch(e) {// AJAX not possible
                if(errorMessage) { alert(errorMessage); }
            }
        }
    }
    return r;
}

这就是我在哪里展示它

<div id="pairname"><b>Charts will  be shown here.</b></div>*

这是接收和发回信息的脚本。所以基本上它显示每个数字1到10的5个图表。     

$q=$_GET["q"];

 Echo "<img src=mqluploads/".$q."15.gif?".time()."></img>";
 Echo "<br>";
 Echo "---------------------------------------------------------";
 Echo "<br>";   

 Echo "<img src=mqluploads/".$q."60.gif?".time()."></img>";
 Echo "<br>";
 Echo "---------------------------------------------------------";
 Echo "<br>";

 Echo "<img src=mqluploads/".$q."240.gif?".time()."></img>";
 Echo "<br>";
 Echo "---------------------------------------------------------";
 Echo "<br>";

 Echo "<img src=mqluploads/".$q."1440.gif?".time()."></img>";
 Echo "<br>";
 Echo "---------------------------------------------------------";
 Echo "<br>";

 Echo "<img src=mqluploads/".$q."10080.gif?".time()."></img>";
 Echo "<br>";
 Echo "---------------------------------------------------------";
 Echo "<br>";

 Echo "<img src=mqluploads/".$q."43200.gif?".time()."></img>";
 Echo "<br>";
 Echo "---------------------------------------------------------";
 Echo "<br>";
?>

许多人提前感谢您的帮助和阅读。过去一周我一直在努力解决这个问题,现在终于决定寻求帮助了。期待您的建议。

1 个答案:

答案 0 :(得分:1)

你检查过你的php脚本是否正在返回一些数据。尝试直接在浏览器中访问getimgdetails.php?q = str(用正确的paremeter替换str)。

在此行之前另外发出警告(xmlhttp.responseText):

的document.getElementById( “pairname”)的innerHTML = xmlhttp.responseText;

这将帮助您进行调试。