对于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。遗憾!
答案 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...
}