从AJAX创建Javascript变量

时间:2014-09-04 13:58:24

标签: javascript php 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。遗憾!

1 个答案:

答案 0 :(得分:0)

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

从我可以看到你将AJAX请求视为某种通用连接,刷新页面中的所有数据......这不是它的工作方式。

问题...

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

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

您似乎试图直接echo PHP变量到您的文档中,这不会起作用,因为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...
    }