【问题标题】:InnerHtml AJAX : Javascript not workingInnerHtml AJAX:Javascript 不工作
【发布时间】:2013-06-16 21:05:01
【问题描述】:

我正在使用 AJAX 调用从另一个 PHP 文件到一个 PHP 文件。 被调用的 PHP 创建一个 html 内容以及一个 JAvascript 代码:

<div id = "chart" style="height: 400px "></div>
<script src="http: //ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src = "http://code.highcharts.com/highcharts.js" > < /script>
<script>
    $(function (){ 
        var xcat = ["Build 1","Build 2"];
        var datas = [100,60]; 
        $("#chart").highcharts({
            chart: {
                type: "column"
            },
            title: {
                text: "Build Progress"
            },
            xAxis: {
                categories: xcat
            },
            yAxis: {
                title: {
                    text: "seconds"
                }
            },
            series: [{
                name: "Boot Time",
                data: datas
            }]
      });    
});
</script >

使用innerhtml 插入后脚本不会执行。 我阅读了一些解决方案:其中一个存在,但用于外部 js 文件。

http://www.hunlock.com/blogs/Howto_Dynamically_Insert_Javascript_And_CSS#quickIDX1

我需要知道如何让脚本在没有外部 js 文件的情况下运行

帮我做同样的事情

谢谢。 帕特里克

【问题讨论】:

  • 可能只是因为这个错字:&lt; /script&gt;,必须是:&lt;/script&gt;

标签: javascript ajax html innerhtml


【解决方案1】:

当您使用innerHTML 时,脚本标签不会被执行。如果你使用 jquery,你可以试试$.html() 而不是innerHTML。 $.html() 会自动执行脚本标签。

【讨论】:

    【解决方案2】:

    您链接的代码只会在 DOM 就绪事件触发时触发。如果您是通过 ajax 加载它,那么您是对的。它永远不会触发,因为页面已经加载并且您没有刷新。

    改变

        $(function (){ //shorthand for jQuery(document).ready(function(){
            var xcat = ["Build 1","Build 2"];
            var datas = [100,60]; 
            $("#chart").highcharts({
                chart: {
                    type: "column"
                },
                title: {
                    text: "Build Progress"
                },
                xAxis: {
                    categories: xcat
                },
                yAxis: {
                    title: {
                        text: "seconds"
                    }
                },
                series: [{
                    name: "Boot Time",
                    data: datas
                }]
            });    
        });
    

        function (){ 
            var xcat = ["Build 1","Build 2"];
            var datas = [100,60]; 
            $("#chart").highcharts({
                chart: {
                    type: "column"
                },
                title: {
                    text: "Build Progress"
                },
                xAxis: {
                    categories: xcat
                },
                yAxis: {
                    title: {
                        text: "seconds"
                    }
                },
                series: [{
                    name: "Boot Time",
                    data: datas
                }]
            });    
        }();// the () self executes the function so you don't have to call it
    

    【讨论】:

    • 我尝试使用自执行功能,但这似乎仍然无法解决问题。当我单独运行被调用的 PHP 时,它使用我的方法完美加载,但在使用自执行功能后即使这似乎失败了
    • 你还修正了@cherniv 指出的错字吗? 应该是
    • @Patrick 我可以假设您使用的是 $.ajax 吗?如果是这样,您是否传递了dataType: 'html' 参数?根据 jquery 文档““html”:将 HTML 作为纯文本返回;包含的脚本标签在插入 DOM 时进行评估。“more here
    • 我正在使用 XmlhttpRequest 方法,如下所述:w3schools.com/php/php_ajax_database.asp 不是正确的 ajax。我不确定如何使用 AJAX 和 JQUERY。 :(
    • @Patrick 我感觉它的内容标题并没有告诉浏览器执行脚本(尽管我仍然支持我原始答案中的自我执行功能,作为解决整体问题的一部分) 有机会时试试 jquery ajax。如果您已经将库用于其他事情,它将使您的生活更轻松。 http://api.jquery.com/jQuery.ajax/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2020-08-30
    相关资源
    最近更新 更多