Javascript <;脚本>;标记在jQuery帖子之后不起作用
我对jQuery有一个问题,因为它没有加载到请求的div中 设置:Javascript <;脚本>;标记在jQuery帖子之后不起作用,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我对jQuery有一个问题,因为它没有加载到请求的div中 设置: 在index.php上,我在4个选项卡上有4个Morris图表,都运行良好 每个选项卡上都有一个列表。列表中的每个项目都是一个链接 单击链接后,选项卡中的div将重新加载新数据 邮寄: $(document).ready(function () { $('.click5').click(function () { companyId = $(this).attr('id'); $.post('./ajax/d
$(document).ready(function () {
$('.click5').click(function () {
companyId = $(this).attr('id');
$.post('./ajax/donut5.php', {
clickthrough5: $('#company5-'+companyId+' .clickthrough5').val(),
ref_date_from5: $('#company5-'+companyId+' .ref_date_from5').val(),
ref_date_to5: $('#company5-'+companyId+' .ref_date_to5').val()
},
function (data) {
$('.donut5').html(data);
});
});
});
$(document).ready(function () {
$('.backref2').click(function () {
companyId = $(this).attr('id');
$.post('./ajax/donut1.php', {
clickthrough6: $('#company6-'+companyId+' .clickthrough6').val(),
ref_date_from6: $('#company6-'+companyId+' .ref_date_from6').val(),
ref_date_to6: $('#company6-'+companyId+' .ref_date_to6').val()
},
function (data) {
$('.donut5').html(data);
});
});
});
<div id="divTest1"></div>
<script type="text/javascript">
$("#divTest1").text("Hello, world!");
</script>
$(“#divTest1”).text(“你好,世界!”);
<?php
include("../../../includes/config.php");
$selected = $_POST['clickthrough6'];
$date_from = $_POST['ref_date_from6'];
$date_to = $_POST['ref_date_to6'];
?>
<script src="../../../js/jquery-1.11.0.js"></script>
<script>
$(document).ready(function () {
$('.click7').click(function () {
companyId = $(this).attr('id');
$.post('./ajax/donut5.php', {
clickthrough5: $('#company7-'+companyId+' .clickthrough7').val(),
ref_date_from5: $('#company7-'+companyId+' .ref_date_from7').val(),
ref_date_to5: $('#company7-'+companyId+' .ref_date_to7').val()
},
function (data) {
$('.donut5').html(data);
});
});
});
</script>
<div id="tabs2">
<div id="tabs-1" class="donut5">
<h4>Top 5 Referrers - Quotes <br /><small>Total number of Quotes between <?php echo date("d/m/Y", $date_from); ?> to <?php echo date("d/m/Y", $date_to); ?></small></h4>
<div class="statgrid">
<div id="divTest1"></div>
<script type="text/javascript">
$("#divTest1").text("Hello, world!");
</script>
<?php $quotes_q="SELECT
c.case_id,
co.name AS company_name,
co.company_id AS company_id,
COUNT(c.case_id) 'quote_count'
FROM
(`case` c,
`panel_company` pc,
`panel` p)
LEFT JOIN company co ON (co.company_id = pc.company_id)
WHERE pc.panel_id = " .$RegisteredUser['panel_id']. " AND
p.company_id = pc.company_id AND
c.panel_id = p.panel_id AND
c.insert_date > ".$date_from. " AND
c.insert_date < ".$date_to. "
GROUP BY p.panel_id
ORDER BY quote_count DESC, co.company_id
LIMIT 5";
$result=$mysqli->query($quotes_q); ?>
<div class="col-2-6">
<div id="morris-donut-chart6"></div>
</div>
</div>
<div class="statgrid">
<?php while ($row=$result->fetch_array()) { ?>
<div class="col-4-6">
<div id="company7-<?php echo $row['company_id'];?>">
<input type="hidden" class="ref_date_from7" value="<?php echo $date_from; ?>" />
<input type="hidden" class="ref_date_to7" value="<?php echo $date_to; ?>" />
<input type="hidden" class="clickthrough7" value="<?php echo $row['company_id'] ?>" />
<a><div id="<?php echo $row['company_id'];?>" class="click7 col-5-6"><?php echo $row['company_name']; ?></div></a>
<div class="col-1-6"><?php echo $row['quote_count']; ?></div>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
<?php
$quotes_q = "SELECT
c.case_id,
co.name AS company_name,
COUNT(c.case_id) 'quote_count'
FROM
(`case` c,
`panel_company` pc,
`panel` p)
LEFT JOIN company co ON (co.company_id = pc.company_id)
WHERE pc.panel_id = ".$RegisteredUser['panel_id']." AND
p.company_id = pc.company_id AND
c.panel_id = p.panel_id AND
c.insert_date > ".$date_from." AND
c.insert_date < ".$date_to."
GROUP BY p.panel_id
ORDER BY quote_count DESC, co.company_id
LIMIT 5";
$result = $mysqli->query($quotes_q);
?>
<script>
var donut_data6 = [
<?php while ($row = $result->fetch_array()) { ?>
{
label: '<?php echo substr($row['company_name'],0,15); ?>',
value: '<?php echo $row['quote_count']; ?>'
},
<?php } ?>
];
var donut6 = {
element: 'morris-donut-chart6',
data: donut_data6,
resize: false
}
donut6 = Morris.Donut(donut6)
</script>
$(文档).ready(函数(){
$('.click7')。单击(函数(){
companyId=$(this.attr('id');
$.post('./ajax/donut5.php'{
点击5:$(“#公司7-”+公司ID+”.点击7').val(),
ref#date_from 5:$(“#company7-”+companyId+”.ref#date_from 7').val(),
参考日期5:$(“#公司7-”+公司ID+”.参考日期7').val()
},
功能(数据){
$('.donut5').html(数据);
});
});
});
前5名推荐人-报价
到之间的报价总数
$(“#divTest1”).text(“你好,世界!”);
变量油炸圈饼数据6=[
{
标签:“”,
值:“”
},
];
变量donut6={
元素:“morris-donut-chart6”,
数据:油炸圈饼数据6,
调整大小:false
}
甜甜圈6=莫里斯甜甜圈(甜甜圈6)
编辑2:
不太确定这是否会产生不同的结果,但在网络选项卡中,我有两个jquery列表,第一个是从标头加载的,加载304 Not Modified,第二个是调用donut5.php加载的,加载为200 OK。似乎在此之后我可能无法再请求jquery了
EDIT3:在donut1.php中,除了jquery脚本请求和我试图检索的div中的helloworld之外,我已经删除了所有内容。“网络”选项卡仍然显示jquery未加载。奇怪的是,我有一个精确的设置,没有图表,在同一个页面上工作(当然是不同的div类),这确实可以很好地加载jquery
EDIT4:将jQuery替换为JS作为测试,即使是基本的独立JS也无法工作,添加到:
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
document.getElementById(“demo”).innerHTML=“Hello JavaScript!”;
无:(-JS世界中的循环)
EDIT5:假设
是一个HTML标记,因此也在其中循环
EDIT6:当向上面列表项4中的函数添加console.logo(数据)时,我得到了以下信息(显然我排除了很多测试内容:
<script src="../../../js/jquery-1.11.0.js"></script>
<script src="../../../js/jquery-ui.js"></script>
<!--
<script>
$(document).ready(function () {
$('.click7').click(function () {
companyId = $(this).attr('id');
$.post('./ajax/donut5.php', {
clickthrough5: $('#company7-'+companyId+' .clickthrough7').val(),
ref_date_from5: $('#company7-'+companyId+' .ref_date_from7').val(),
ref_date_to5: $('#company7-'+companyId+' .ref_date_to7').val()
},
function (data) {
$('.donut5').html(data);
});
});
});
</script>
-->
<div id="tabs2">
<div id="tabs-1" class="donut5">
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = "Hello JavaScript!";
</script>
<div id="divTest1"></div>
<script type="text/javascript">
$("#divTest1").text("Hello, world!");
</script>
</div>
</div>
document.getElementById(“demo”).innerHTML=“Hello JavaScript!”;
$(“#divTest1”).text(“你好,世界!”);
编辑7:
在这里放置代码以确认我是否正确执行了KevinB的建议
var
contentSelector = '.donut5',
$content = $(contentSelector),
contentNode = $content.get(0);
var documentHtml = function (html) {
// Prepare
var result = String(html)
.replace(/<\!DOCTYPE[^>]*>/i, '')
.replace(/<(html|head|body|title|meta|script)([\s\>])/gi,'<div class="document-$1"$2')
.replace(/<\/(html|head|body|title|meta|script)\>/gi, '</div>');
// Return
return $.trim(result);
};
$(document).ready(function () {
$('.click5').click(function () {
companyId = $(this).attr('id');
$.post('./ajax/donut5.php', {
clickthrough5: $('#company5-' + companyId + ' .clickthrough5').val(),
ref_date_from5: $('#company5-' + companyId + ' .ref_date_from5').val(),
ref_date_to5: $('#company5-' + companyId + ' .ref_date_to5').val()
},
function (data) {
var
$data = $(documentHtml(data)),
$dataBody = $data.find('.donut5'),
$dataContent = $dataBody.find(contentSelector),
$menuChildren, contentHtml, $scripts;
// Fetch the scripts
$scripts = $dataContent.find('.document-script');
if ($scripts.length) {
$scripts.detach();
}
// Fetch the content
contentHtml = $dataContent.html() || $data.html();
$scripts.each(function () {
var $script = $(this),
scriptText = $script.text(),
scriptNode = document.createElement('script');
if ($script.attr('src')) {
if (!$script[0].async) {
scriptNode.async = false;
}
scriptNode.src = $script.attr('src');
}
scriptNode.appendChild(document.createTextNode(scriptText));
contentNode.appendChild(scriptNode);
});
console.log(data);
});
});
});
var
contentSelector='.donut5',
$content=$(contentSelector),
contentNode=$content.get(0);
var documentHtml=函数(html){
//预备
变量结果=字符串(html)
.替换(/]*>/i'')
.replace(/])/gi,“当您将htmlstring传递给.html时,会发生以下两种情况之一。它要么使用.innerHTML
插入,要么使用.empty().append(htmlstring)
插入。选择哪一个取决于传入的htmlstring的复杂性
如果相对简单,将使用.innerHTML,脚本将以您期望的方式执行
但是,如果更复杂,则在将元素附加到文档之前,首先解析元素并将其附加到docFragment中。这中间步骤是导致问题的原因,因为javascript将在元素成为文档的一部分之前执行
解决此问题的唯一方法是强制延迟javascript的执行,方法是对javascript进行编码,使其在稍后被调用的回调中执行,或者在追加之前从htmlstring中删除javascript,然后在追加之后执行
以下是前者的一个例子:
(function divTestLooper () {
if (!$("#divTest1").length) {
// the element didn't exist, lets wait a little longer...
return setTimeout(divTestLooper, 10);
}
$("#divTest1").text("Hello, world!");
})();
下面是后者的一个例子:
和
和
当然,最好的解决方案可能是完全通过不在部分中包含javascript来避免这个问题。好的,所以donut1.php
被donut5.php
调用,但是您没有看到返回的任何内容?也许从来没有达到AJAX调用。您的donut5.php
看起来像什么?@Shahar一点也没有。我有我一直在跟踪日志