【发布时间】:2011-11-24 05:54:21
【问题描述】:
我的 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 代码)在 Chrome 和 Firefox 中都显示在我的#content 中。
【问题讨论】:
-
问一个愚蠢的问题:如果您的第一个 Ajax 是调用 PHP 脚本,为什么要尝试包含一些 JavaScript 来运行另一个 Ajax 调用?在
getposts.php中调用query.php不是更容易吗? -
没有。对 query.php 的 ajax 调用从不同的数据库中获取一个数组,并使用该信息执行一些 jQuery,以更改 getposts.php 中某些 div 的类。然后通过对 getposts.php 的 ajax 调用将此输出插入到#content 中。即使我在 getposts.php 中包含 query.php,我仍然需要在其上执行更多 jQuery 来更改 div 类。这让我们回到第一方。如果我将 setchecked.js 中的 javascript 包含到我的 index.php 中,它不会在插入到 #content 的内容上执行,因此 #content 只会包含未修改的 div 类。
-
您需要从单独的数据库中获取什么?能具体点吗?
-
我发现了问题!对 getposts.php 的 ajax 调用成功执行 getposts.php 的加载。通过删除 ajax 代码并简单地离开负载,javascript 可以完美运行!