javascript - 在调用 Ajax 的页面中执行 Javascript

标签 javascript ajax

我需要使用 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/

相关文章:

javascript - 为什么箭头函数必须声明在调用函数之上

javascript - Chrome 扩展程序搜索字符串然后执行某些操作

javascript - ReactJS。如何在 React 中通过 ref 获取 ClassList 和其他 DIV 属性

javascript - 添加loginWith<service>中未包含的外部登录服务

javascript - AJAX IE 找不到元素 ( getElementByID() )

angularjs - 在 AngularJS 中缓存 HTTP 'Get' 服务响应?

javascript - 数组总值,保留小数点

javascript - 如何使 <li> 可从返回动态 html 的 ajax 搜索结果中单击?

javascript - 将 AJAX 中的 javascript 请求发送到 C# 方法,无返回值、ASP.NET、MVC

php - AJAX 通过 php 从 sql 中获取数据,然后将数据值显示到 html 元素中