-1

我是一个菜鸟,我正在努力让这个脚本工作。它在除 IE 之外的所有浏览器中都能完美运行。我已经在 stackoverflow 上尝试了大多数解决方案,但它们都不适合我。我在某个我无法发现的地方犯了一些幼稚的错误。会请求你的帮助。

也只是为了让您知道使用 appendchild 的 DOM 对象格式对我来说可能无法 100% 正确工作,因为该脚本基本上从下拉列表中传递值,该下拉列表显示从 1 到 10 的数字,并根据这些数字拉出相应的图表。因此,如果我正在查看图表 1,那么我可以继续并选择下拉菜单以查看图表 3。但是如果我们使用 appendchild 属性,它只允许我通过选择 1 到 10 来查看其中一个图表,除非我刷新页面,否则它不起作用。因此,除非使用 deletechild,否则我认为它不会起作用,只是我的猜测。因此,我已将该部分注释掉,并且我使用的是旧的 innerhtml 方法。

这是我的 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>";
?>

非常感谢您的帮助和到目前为止的阅读。过去一周我一直在为此苦苦挣扎,现在终于决定寻求帮助。期待您的建议。

4

1 回答 1

1

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

还要在此行之前放置一个 alert(xmlhttp.responseText) :

document.getElementById("pairname").innerHTML=xmlhttp.responseText;

这将帮助您进行调试。

于 2013-06-26T03:46:26.830 回答