从AJAX创建Javascript变量


Create Javascript variable from AJAX

我实际上是AJAX的初学者,所以我需要一些帮助。。

我的索引/主页上有一些javascript,可以将一些XML发送到第三方脚本;

<script type="text/javascript">
   var myChart = new FusionCharts("/FusionCharts/Radar.swf","myChartId", "784", "500", "0");
   myChart.setXMLData("<?php echo $radar_data_string; ?>");
   myChart.render("chartContainer"); 
</script>

变量$radar_data_string是我在AJAX页面中构建的php字符串。在同一个索引/主页上,我必须调用AJAX请求,如下所示;

<!-- Javascript Call to AJAX file -->
<script>
 function showFeedback(str) {
   if (str=="") {
     document.getElementById("txtHint").innerHTML="";
     return;
   } 
  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("txtHint").innerHTML=xmlhttp.responseText;
     }
   }
   xmlhttp.open("GET","viewFeedback/getFeedback.php?surveyid="+str,true);
   xmlhttp.send();
 }
 </script>
 <!-- End Javascript Call to AJAX file -->

上面的代码将surveyid变量传递给getFeedback.php脚本,这就是创建$radar_data_string的地方。

AJAX请求是在用户选择以下选项之一时发出的;

<select id="survey" name="survey" onChange="showFeedback(this.value);">               
  <option value=''>- -</option>
  <option value='13182|customer1@hotmail.com'>Survey Title 1</option>
  <option value='13183|customer1@hotmail.com'>Survey Title 2</option>
</select>

问题是。。。没有加载任何数据。我非常确信我正在创建的$radar_data_string字符串是正确的,因为当我获得该字符串并将其直接放入myChart.setXMLData时,它会正常工作。

那么,我是误解了AJAX的工作原理(可能),还是我走在了正确的轨道上?

PS-如果你要帮忙,你应该知道我真的不能使用jQuery。很抱歉

您似乎误解了AJAX请求的工作方式(至少从我对您给出的代码的理解来看)。AJAX请求的目的是从服务器请求新数据,而不必重新加载页面的其余部分。

据我所见,您将AJAX请求视为某种通用连接,可以刷新页面中的所有数据。。。它不是这样工作的。

问题

这是一个回调函数,一旦AJAX请求成功,你应该使用这里给出的响应来操作你的页面

xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
     }

您似乎正试图直接将PHP变量echo写入文档,这将无法正常工作,因为在加载页面之前会对PHP进行解释

myChart.setXMLData("<?php echo $radar_data_string; ?>");

解决方案

相反,尝试将您的函数实现到AJAX回调中,现在您可以访问服务器的返回响应

xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       myChart.setXMLData(xmlhttp.responseText); //This being the server response...
    }