AJAX加载不运行javascript

时间:2012-09-11 11:27:54

标签: jquery ajax google-visualization

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

当下拉列表发生变化时,我希望AJAX从我的文件graphmaker.php加载正确的图形。该文件包含适当DIV中的所有图形,即graph1,graph2等。

这些图表是使用Google Charts Visualization生成的。

然而,当我这样做时,AJAX只会加载一个空盒子,而我所研究的是因为页面上的脚本没有被执行。

从本质上讲,我希望Ajax:

  • 获取graphmaker.php
  • 渲染页面
  • 然后拉出正确的图表

我的代码:

function switchgraph(graph) {
var switchto = $("#graph"+graph+"_dd").val();
$('#graph'+graph).load('graphmaker.php #'+switchto);
}

有什么建议吗?

戴夫

3 个答案:

答案 0 :(得分:2)

在AJAX调用结束后,选择相关的图表,而不是使用带有loadwhich removes the scripts的选择器:

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);
    });
}

答案 1 :(得分:0)

我认为你需要使用

$.getScript() 

或者您可以尝试

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

请查看API

答案 2 :(得分:0)

我建议您使用$ .post函数,而不是$ .ajax,所以尝试这样的事情:

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