Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP while循环中通过jQuery运行附加数据?_Php_Jquery_Html_Ajax - Fatal编程技术网

如何在PHP while循环中通过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'];

我会尽力解释清楚我的问题,我一直在使用ajax,在使用jquery时在
循环中添加数据时遇到了一些问题

这是我的循环,显示文章的标题并检查标题是否有任何注释。如果不是,它将不显示任何注释

<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
        });
    });