1

我一直在尝试以不同的方式解决这个问题,但没有让它按预期工作,我觉得这没什么大不了的(我真的希望如此)但我在 Ajax 和 jQuery 方面的经验和技能有点有限为什么我呼吁你的专业知识!

我正在制作一张类似于http://www.jqplot.com/tests/data-renderers.php的图表。但在我的情况下,json文件是根据用户从选择框中选择的值生成的。我正在使用 2 个文件和 ajax 调用来完成此操作:

-AnnualB.html是选择框所在的文件,应该显示图表。

-Index.php是对数据库进行查询的文件(使用从 AnnualB.html 中的选择框获得的值)并生成 json 数组。

在 AnnualB.html 中,我使用 GET 方法从选择框中检索值并将其发送到 Index.php,后者生成 json 数据。基于该json数据,必须在AnnualB中创建图表......这就是我的问题所在。生成图表的函数工作正常,发送选择值并返回 json 的调用也正常工作(已使用 Firebug 检查),但我知道缺少一些东西(但还不知道什么),因为我没有' t 设法将 json 数据传递给生成图表的函数。

我在 AnnualB.html 中的代码是这样的(用...缩写一些不相关的信息):

生成图表的功能(如果传递了json数据,则可以正常工作)

function CreateGraph() { 
 $(document).ready(function(){
var ajaxDataRenderer = function(url, plot) {
    var ret = null;
    $.ajax({
        async: false,
        url: url,
        dataType:'json',
        success: function(data) {
            ret = data; }
    });
   return ret; };
$.jqplot.config.enablePlugins = true;
var jsonurl = "./index.php";
var plotData = ajaxDataRenderer(jsonurl); 
var series = ...
plot1 = $.jqplot('Chart1', series,{...}}

Ajax 调用(可能是我的错误/遗漏在哪里)

function LoadGraph(int)
{
if (window.XMLHttpRequest)
  {xmlhttp=new XMLHttpRequest();}
else
  {xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.open("GET","index.php?tasel="+int,true);
xmlhttp.send();
xmlhttp.onreadystatechange=function()
  {
    CreateGraph(int)
    }
}

选择框

<select name="tasel" size="1" onchange="LoadGraph(this.value)">
<option value="">Select accounts type:</option>
  <option value="3">Tuloslaskelma</option>
  <option value="2">Tasevastattava</option>
  <option value="1">Tasevastaava</option>
</select>

The related code in Index.php goes like this (Is working ok when the value of the select box (tasel) is passed)):

$tasel = $_REQUEST['tasel'];
if ($tasel == ...2)
{...}
.
.
.
echo "[",$selite, ",";// These 2 variables create the json array
echo $finaljson, "]";

提前感谢您的耐心和帮助!

4

2 回答 2

1

我意识到这个问题的答案比我预期的要简单。而不是进行整个function LoadGraph(int)ajax 调用,我只需要调用?tasel="+int函数中的 tasel 值来生成这样的图表(它已经在进行 ajax 调用):

function CreateGraph() { 
    $(document).ready(function(){
        var ajaxDataRenderer = function(url, plot) {
            var ret = null;
            $.ajax({
                async: false,
                url: url,
                dataType:'json',
                success: function(data) {
                    ret = data; 
                }
            });
            return ret; 
        };

    $.jqplot.config.enablePlugins = true;
    var jsonurl = "./index.php?tasel="+int;
    var plotData = ajaxDataRenderer(jsonurl); 
    var series = ...
    plot1 = $.jqplot('Chart1', series,{...}
}
于 2013-02-11T08:22:01.013 回答
0
var plot1 = undefined;
var plotOptions = undefined;

function CreateGraph() { 
    $.ajax({
        async: false,
        url: "./index.php",
        dataType:'json',
        success: function(data) {
            var series = fn... // Convert your json Data to array
            if(plot1 != undefined)
            {
                plot1.destroy();
            }
            plot1 = $.jqplot('Chart1', series, plotOptions);
        }
    });
}

$(function(){
    $.jqplot.config.enablePlugins = true;
    plotOptions = {...}; // jqPlot options
    CreateGraph();
});

希望这可以帮助你..

于 2013-02-08T14:06:04.780 回答