这是我第一次将 ajax 与 javascript 混为一谈,我几乎不会将自己描述为 Web 开发人员或 Web 程序员。因此,我将先向您介绍我编写的代码和尝试过的内容,然后描述我的问题以及它最后应该做什么。
所以我有一个select div,里面有一些东西。
<select id="month" onchange="refreshGraph()">
And when an option is chosen this javascript is suppose to work.
function refreshGraph()
{
var index = document.getElementById('month').selectedIndex;
var monthOptions = document.getElementById('month').options;
var selectedDays = monthOptions[index].value;
$.ajax({
url:"divisions.php",
type: "POST",
dataType: "script",
data: {days:selectedDays},
success: function(data){
$('#divisions').html(data);}
});
}
我还尝试将成功函数调用重写为:
$('#divisions').html('<script src="http://code.highcharts.com/highcharts.js">
<script src="http://code.highcharts.com/modules/exporting.js">'+data+'<\/script<\/script>')
而不是 $.ajax() 我也试过这个
$('#divisions').load("divisions", {days: selectedDays});
这是假设更新一个带有 id 的 div 的表。
<table>
<tr>
<td>
<div id="divisions" style="min-width: 90%; height: 50%; margin: 0 auto"></div>
</td>
</tr>
</table>
现在 Divisions.php 是一个文件,其中包含一些数据库调用和一个用纯文本编写的 javascript highchart,这意味着没有 php 或脚本或其他类似的东西围绕纯文本 javascript 代码,即 highchart。所以毕竟我的php是这样开始的
$(document).ready(function () {
$('#divisions').highcharts({
chart: {
这是我包含在 index_new.php 标头中的源文件:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script src="divisions.php"></script>
那我想做什么?鉴于某人在下拉列表中选择的选项,我正在尝试更新图表。下拉列表中的值是传递给divisions.php
. divisions.php
然后在其调用中使用这个额外的 sql 参数,这会影响表的外观。
在第一次加载index_new.php
highchart 时,一切都很好。我面临的问题是,当我在下拉列表中选择任何选项时,图表会更新,但不是显示高图,而是显示纯文本 javascript(见下文),当 index_new.php 首次调用时,该纯文本 javascript(见下文)被解释为实际 javascript . 所以ajax调用正在工作,我正确地抓取了变量,但我猜这是我在我的标题中没有设置样式的javascript?我不知道为什么这不起作用。
更新时我得到的不是高图(是的,我确实用 name1、name2 等替换了实际名称):
$(document).ready(function () { $('#divisions').highcharts({ chart: { type: 'column' }, title: { text: 'Total Sales By Salesperson' }, xAxis: { title: { text: 'Salesperson'}, categories: ['name1', 'name2', 'name3', 'name4', 'name5', 'name6', 'name7', ] }, yAxis: { min: 0, title: { text: 'Total Sales' } }, tooltip: { formatter: function() { return ''+ this.x +'
'+ this.series.name +': '+ this.y +'
'+ 'Total: '+ this.point.stackTotal; } }, legend: { backgroundColor: '#FFFFFF', reversed: true }, plotOptions: { }, series:[ {name: 'Business Equipment' , data: [0, 400, 80000, 68496, 15800, 170000, 155200, ]},{name: 'Corporate Printing' , data: [0, 0, 0, 6600, 0, 0, 0, ]},{name: 'Document Storage' , data: [0, 0, 0, 0, 0, 18000, 0, ]},{name: 'IT Services' , data: [10000, 0, 0, 4500, 0, 0, 2000, ]},]});})