将页面插入div的jQuery打破了javascript

时间:2011-11-23 04:33:46

标签: jquery ajax load reload

我的index.php有一个jquery ajax调用,它将getposts.php插入到我的#content div中。这很好..问题是getposts.php中有一些javascript(更多jQuery),而Chrome确实执行了代码,Firefox没有。

如果我将javascript包含为文件(setchecked.js),firebug正在寻找setchecked.js_ = 1322020697832

如果我将javascript直接包含在getposts.php中,则javascript会被完全忽略(它甚至不会显示在源代码中)

有谁知道为什么以及如何解决它?

的index.php

<script type="text/javascript" src="fetchposts.js"></script>
<div id="content"></div>

fetchposts.js

$(document).ready(function() {
$.ajax({
    url: 'getposts.php',
    type: 'POST',
    success: function (fetched) {
        $('#content').load('getposts.php');
    },
});
});

getposts.php(这使得firebug寻找setchecked.js_ = 1322020697832

<script type="text/javascript" src="setchecked.js"></script>

或getposts.php(源代码中完全没有javascript)

<script type="text/javascript">
$(document).ready(function() {
// set $checked values
$.ajax({
    url: 'query.php',
    type: 'POST',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: true,
    cache: false,
    success: function (msg) {
        ------ do some fun stuff that works --------
    },
});
});
</script>
         --------------- some php and html that DOES display -------------

同样,我的问题不是我的javascript的内容,而是如何让javascript在#content中工作。 Chrome确实可以毫无问题地执行代码。出于某种原因,它是firefox挑剔。 Firebug报告没有错误,除了查找错误的文件或完全忽略它。

其余的getposts.php(html和php代码)会在我的#content中显示在Chrome和Firefox中。

1 个答案:

答案 0 :(得分:1)

我知道脚本正在运行,但我认为它们需要一些重构。 从代码中我看到你是

  1. 将getposts.php中的内容加载到#content
  2. 加载后,您想获得一些JSON
  3. 加载JSON时,你想要一些有趣的东西
  4. 可以通过以下方式改进代码:

    • 没有进行太多的ajax调用
    • 专门为每项任务使用专门的ajax方法
    • 将它们放在一个文件中

    fetchposts.js

    $(document).ready(function() {
        var someFunStuff = function(msg) {
            // do some fun stuff that works 
        };
    
        var setChecked = function() {
            $.getJSON('query.php', someFunStuff);
        };
    
        $('#content').load('getposts.php', setChecked);
    });
    

    如果我误解了你想要完成的事情,或者你有更多需要引入的规范,请告诉我,我会根据需要做出回应。

    更新

    我看到您对使用单个javascript文件所做的评论。你需要从单独的数据库获得什么?