Jquery AJAX加载不运行javascript

Jquery AJAX加载不运行javascript,jquery,ajax,google-visualization,Jquery,Ajax,Google Visualization,我有一个主页,上面有一个图形,一个下拉框允许用户选择他们想要查看的图形 当下拉列表更改时,我希望AJAX从我的文件graphmaker.php加载正确的图形。此文件在适当的div中包含所有图形,即graph1、graph2等 这些图表是使用谷歌图表可视化生成的 然而,当我这样做时,AJAX只是加载一个空框,根据我的研究,这是因为页面上的脚本没有得到执行 本质上,我希望Ajax能够: 获取graphmaker.php 呈现页面 然后拉出正确的图表 我的代码: function switchgrap

我有一个主页,上面有一个图形,一个下拉框允许用户选择他们想要查看的图形

当下拉列表更改时,我希望AJAX从我的文件graphmaker.php加载正确的图形。此文件在适当的div中包含所有图形,即graph1、graph2等

这些图表是使用谷歌图表可视化生成的

然而,当我这样做时,AJAX只是加载一个空框,根据我的研究,这是因为页面上的脚本没有得到执行

本质上,我希望Ajax能够:

获取graphmaker.php 呈现页面 然后拉出正确的图表 我的代码:

function switchgraph(graph) {
var switchto = $("#graph"+graph+"_dd").val();
$('#graph'+graph).load('graphmaker.php #'+switchto);
}
有什么建议吗


戴夫

我想你需要使用

$.getScript() 
或者你可以试试

$.ajax({
 url: url,
 dataType: "script",
 success: success
});

请检查

,而不是在加载时使用选择器,在AJAX调用完成后选择相关图形:

function switchgraph(graph) {
    var switchto = $("#graph"+graph+"_dd").val();
    $('#graph'+graph).load('graphmaker.php', function onComplete() {
       function doMoveGraph() {
           $('#graph' + graph).empty().append(toBeUsed);
       }
       function checkMoveGraph() {
            if (!toBeUsed.is(":empty")) {
                doMoveGraph();
            } else {
                setTimeout(checkMoveGraph, 100);
            }
       }
       var toBeUsed = $(this).find('#'+switchto);
       setTimeout(checkMoveGraph, 100);
    });
}

我建议您不要使用$.ajax,而是使用$.post函数,因此请尝试以下方法:

$.post('graphmaker.php', { data : dataSource },
  function(data) {
    //On Success
  }
)

把所有你想做的事情都放在一个函数中,然后在load提供的回调中运行这个函数。我认为你做不到这一点。它需要为graphmaker.php提供某种沙箱,页面将在其中呈现,并且与该页面相关的Javascript可以运行。我认为你唯一能做的就是将谷歌图表可视化包含到你的当前页面中,并在添加DIV内容后调用它。你能解释更多关于timeoutloop/事件处理程序的信息吗?这可能需要填鸭式的处理,抱歉!这看起来会奏效,耶:这取决于脚本的结果。他们是否设置图像标记的src属性?还是在画布上写字?或他们可能会发起一个活动吗?您可能需要以某种方式推断脚本已经“完成”,而您如何做到这一点显然取决于脚本的功能。在您的问题中添加一些实时代码的链接将对此有所帮助。好的-这是graphmaker.php的副本。你的想法是什么?不幸的是,我无法提供一个实时链接,因为代码是在登录后运行的-抱歉。嗯,在这种情况下,通过AJAX只加载数据,然后在主页中生成图形可能更有意义。因此,可以让php返回一个JSON结构,其中包含图形数据,即当前传递给addRows API的数据。然后您可以使用它自己从主页生成正确的图形。我已经添加了超时循环代码,尽管我仍然建议您仅对数据使用JSON,并在主页中创建图形。在任何情况下,超时循环都通过检查包含图形的元素是否仍然为空来工作。如果不是,它会将元素移动到指定的容器中。请注意,生成的DOM事件可能会影响graph API的功能。。。我对graph API还不太熟悉,因此无法说出使用纯JSON处理数据并从主页创建图形的另一个原因。