我需要使用 Ajax 调用将一些数据发送到解析它的 PHP 文件,使用 d3js 呈现图形(因此其中包含一些 Javascript),提取生成的 SVG(更多 JS)并将其保存到 SQL(通过另一个 Ajax 调用)。所以它就像一个包含 3 个页面/文件的序列: 数据操作页面 --> graph/svg 渲染器 --> 使用 PHP 上传 SQL
问题是,如果我提交第一页,第二页的 Javascript 不会执行。如果我将第一页的请求复制到另一个窗口,它工作正常。
简化后的文件是这样的:
test_ajax_1.php:
<html>
<head>
<script type="text/javascript" src="../addons/jquery-1.10.2.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready( function() {
var request = $.ajax({
url: "test_ajax_2.php",
type: "get",
data: {
graph : '123'
}
});
});
</script>
</body>
</html>
test_ajax_2.php:
<html>
<head>
<script type="text/javascript" src="../addons/jquery-1.10.2.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready( function() {
var renderedGraph = "<svg><? echo $_GET['graph']; ?></svg>";
var request = $.ajax({
url: "test_ajax_3.php",
type: "get",
data: {
newGraph : renderedGraph
}
});
});
</script>
</body>
</html>
test_ajax_3.php:
<?php
$renderedGraph = $_GET['newGraph'];
$connect_db=mysqli_connect('localhost', 'this', 'that', 'whatnot');
$result = $connect_db->query("UPDATE the_table SET svg='$renderedGraph' WHERE id = '1'");
?>
如果我访问 www.mysite.com/test_ajax_1.php,什么也没有发生
如果我访问 www.mysite.com/test_ajax_2.php?graph=123,如果工作正常。
真正的问题是,是否可以在调用 Ajax 的页面上执行 Javascript,还是我应该寻找其他方法?
最佳答案
您实际上并未对从 ajax 调用中获得的响应执行任何操作。 运行脚本的一种简单方法是创建一个隐藏的 iframe 并将结果 html 添加到其中。
$(document).ready( function() {
var request = $.ajax({
url: "test_ajax_2.php",
type: "get",
data: {
graph : '123'
},
success: function(data) {
var iframe = $("<iframe>").html(data).hide();
$("body").append(iframe);
});
});
关于javascript - 在调用 Ajax 的页面中执行 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21375746/