如何在PHP while循环中通过jQuery运行附加数据?
我会尽力解释清楚我的问题,我一直在使用ajax,在使用jquery时在如何在PHP while循环中通过jQuery运行附加数据?,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我会尽力解释清楚我的问题,我一直在使用ajax,在使用jquery时在循环中添加数据时遇到了一些问题 这是我的循环,显示文章的标题并检查标题是否有任何注释。如果不是,它将不显示任何注释 <ul class="title"> <?php $result = getTitles(); while ($row = $result->fetch_assoc()) { ?> <li> <?php echo $row['title'];
循环中添加数据时遇到了一些问题
这是我的循环,显示文章的标题并检查标题是否有任何注释。如果不是,它将不显示任何注释
<ul class="title">
<?php $result = getTitles();
while ($row = $result->fetch_assoc()) { ?>
<li> <?php echo $row['title']; ?> </li>
<ul class="comments">
<?php $comments = getComments();
while (...) { ?>
<li> <?php //get comments associated to the title posts ?>
<?php } ?>
<input box>
</ul>
<?php } ?>
</ul>
-
所以它是这样显示的
title 1
|- comment 1
|- comment 2
|- <input> box
title 2
|- comment 1
|- <input> box
title 3
|- <b>no comment </b>
|- <input> box
标题1
|-评论1
|-评论2
|-盒子
标题2
|-评论1
|-盒子
标题3
|-无可奉告
|-盒子
然后我有一个jQuery,它从
中获取值,并将结果附加到
/*AJAX-提交状态*/
$(函数(){
$(文档)。在('click','.submit',函数(){
var title=$('#title').val().trim();
如果(title.length==0){//some code}
$.post('insert_post.php',{title:title});
$(“”+title+“ ”).prependTo(“.title”);
});
});
当前,当我附加数据时,它只是发布标题
,而没有在while
循环中运行它
我希望它发生的方式是,在循环中运行附加的数据,因此在显示时,它将包括与我的while
循环相关联的所有必要元素
其中一个元素是
框,每个标题都有自己的
框。对于通过jQuery附加的数据,它只发布标题
,而不是每个标题
必须包含的元素。您的HTML无效-元素的唯一有效子元素是
,而不是其他元素。将HTML重新格式化如下:
<ul class="title">
<?php $result = getTitles();
while ($row = $result->fetch_assoc()) { ?>
<li title="<?php echo $row['title']; ?>">
<?php echo $row['title']; ?>
<ul class="comments">
<?php $comments = getComments();
while (...) { ?>
<li> <?php //get comments associated to the title posts ?>
<?php } ?>
<li>
<form>
<textarea></textarea>
<input type="submit" />
</form>
</li>
</ul>
</li>
<?php } ?>
</ul>
如附件所示,您可以在DOM树上搜索正确的标题:您的HTML无效-元素的唯一有效子元素是
,而不是其他元素。将HTML重新格式化如下:
<ul class="title">
<?php $result = getTitles();
while ($row = $result->fetch_assoc()) { ?>
<li title="<?php echo $row['title']; ?>">
<?php echo $row['title']; ?>
<ul class="comments">
<?php $comments = getComments();
while (...) { ?>
<li> <?php //get comments associated to the title posts ?>
<?php } ?>
<li>
<form>
<textarea></textarea>
<input type="submit" />
</form>
</li>
</ul>
</li>
<?php } ?>
</ul>
随附的是一个简单的JSFIDLE演示,您可以沿着DOM树搜索正确的标题:您知道什么是PHP是服务器端语言,而JS是客户端语言,对吗?基本上,您不能在PHP while循环中运行JS脚本。此外,您的标记无效-您在
中嵌套了
和元素。
元素的唯一有效子元素是
。抱歉,如果我的解释有点不清楚的话。我刚刚意识到我无法将附加的数据插入while循环。我只是想也许有一种方法可以在jquery中实现这一点。正如我最近了解到的那样,还有,你到底想在哪里插入标题?您还没有说清楚,因为您有两个嵌套级别。在我的
中,这是我放置标题的地方。每个标题都有自己的注释,这就是为什么我有一个子
,在那里我列出了我的注释。为什么你想在标题已经存在的时候预先添加/附加标题?你知道什么PHP是服务器端语言,而JS是客户端语言,对吗?基本上,您不能在PHP while循环中运行JS脚本。此外,您的标记无效-您在
中嵌套了
和元素。
元素的唯一有效子元素是
。抱歉,如果我的解释有点不清楚的话。我刚刚意识到我无法将附加的数据插入while循环。我只是想也许有一种方法可以在jquery中实现这一点。正如我最近了解到的那样,还有,你到底想在哪里插入标题?您还没有说清楚,因为您有两个嵌套级别。在我的
中,这是我放置标题的地方。每个标题都有自己的注释,这就是为什么我有一个子
,在那里我列出了我的注释。为什么你要在标题已经存在的时候预先添加/附加标题?
$(function() {
$(document).on('click','.submit', function () {
// Alternate:
// $(document).on('submit', '.comments form', function() {
// Travel up DOM tree to get the title, from the <li> element with the title attribute specified
var title = $(this).parents("li[title]").attr("title");
// Do rest of the AJAX call
});
});