【问题标题】:Cannot echo a Javascript call [duplicate]无法回显 Javascript 调用 [重复]
【发布时间】:2013-01-08 19:29:25
【问题描述】:

可能重复:
Jquery load with script tags

在 PHP 页面中,我尝试使用带有 onclick 调用的 jquery 将一些内容插入到名为“内容”的 DIV 中。

<div id="content" class="content"></div>

我调用的jquery版本是:

//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js

当点击链接时,它会调用以下 javascript:

function loadA(a_variable) {
    $("#content").load("build.php?variable=" + a_variable); 
}

build.php 页面做了一些事情并尝试包含一些文本插入 javascript:

echo "Lorem ipsum dolor sit amet, consectetuer adipiscing elit";

echo "<script type='text/javascript' src='script_name.js'></script>";

echo "Lorem ipsum dolor sit amet, consectetuer adipiscing elit";

除了脚本被删除并且没有出现在我的客户端中之外,一切正常。知道为什么会发生这种情况以及如何解决吗?

【问题讨论】:

  • 您确定脚本实际上没有执行吗?标记可能会被删除,但js 应该 仍然执行api.jquery.com/load 使用firebug 等查看浏览器是否正在请求/script_name.js
  • 添加警报(“来自添加的脚本”);在您的 script_name.js 中并检查是否在加载时执行
  • 你为什么不尝试使用getScript()函数。

标签: php javascript jquery ajax


【解决方案1】:

jQuery 实际上并没有将 &lt;script&gt; 元素附加到 DOM。相反,它只是评估脚本的内容。因为它不在 DOM 中,所以你找不到它,虽然你可以通过检查从 .load 获得的内容来检查你的 php 回显内容是否包含脚本标记,例如:

$("#content").load("build.php?variable=" + a_variable, function(data) {
  console.log(data); // check if you see script in the content or not
}); 

【讨论】:

    【解决方案2】:

    例如,尝试将 HTML 标记添加到您的 PHP 中:

    echo "<html><body>data.<script></script>...</body></html>"
    

    使用任何网络嗅探器(如 FireBug,或者如果您在开发者控制台中使用 chrome 的“网络”选项卡),查看您从 php 获得的内容,您的页面中可能存在 404 错误)

    【讨论】:

    • 这将在 DOM 中创建嵌套的 &lt;html&gt;&lt;body&gt; 元素,这有效吗?除非 jQuery 足够聪明,可以过滤掉它们,否则不需要它们。
    猜你喜欢
    • 1970-01-01
    • 2013-04-19
    • 2016-11-15
    • 2017-04-10
    • 2017-01-27
    • 2013-01-30
    • 1970-01-01
    • 2014-03-15
    • 2010-09-16
    相关资源
    最近更新 更多