首页 > 解决方案 > 尝试使用基于按钮单击的php即时使用jquery附加一个html元素,但没有显示任何内容

问题描述

尝试使用基于按钮单击的 PHP 动态使用 jQuery 附加 html 元素,但没有显示任何内容。由于它是动态创建的,因此我使用计数器变量保留了动态 html 元素的 id 和 name 属性的值,以便以后在保存到数据库时可以将其彼此区分开来。

以下是代码

      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <?php
          if (isset($_POST['checkexistingopp']))
        {
         $sql = "select l.id as LinkId, o.id, concat(o.Opponenttype,' - ', o.OpponentName , ' - رقم المرجعي - ',o.Refnumber,' ',o.OpponentCaser) as Opponent ,l.case_id,l.opponent_id  from wp_opponentcaselink l, wp_opponents o where  o.id=l.opponent_id and  l.case_id=".$_POST['case_id'];
     //echo $sql;
            if ($results = $wpdb->get_results( $sql))
      {
                $c=0;
                 $echomsg= "<script>
                    $(document).ready(function() { var str='';";
                foreach ($results as $result){
                    $linkid=$result->LinkId;
                    $RefNumber=$result->refnumber;
                    $case_id=$result->case_id;
                    $opponent_id=$result->opponent_id;
                    $opponent=$result->Opponent;
                    $c=$c+1;  //counter to differentiate names and ids of html elements
        
                    if (isset($opponent_id)) {
                    $echomsg.=" str=\"<br> <br><input type=\"hidden\" id=\"LinkId.$c.\" name=\"LinkId.$c.\" value=\"$linkid\" /> <p>Opponent No.$c.</p> <select id=\"opponent_id.$c.\"  name=\"opponent_id.$c.\" class=\"form-control input sm select2\">.$OpponentOptions.
            <option value=\"$opponent_id\" selected>$opponent</option>
            </select>
                        $( \"#AppendForm\" ).append(str);";
       
                    }
            }
             $echomsg.= " });
                    </script>";
                    echo $echomsg;
                      //var_dump($echomsg);
            }
              }
         ?>

以下是表单html

          <form role="form" method="post">
          select case
           <select id="case_id" name="case_id" class="form-control input sm select2" required>
             <?php echo $options; ?>
           </select>
           <input type="submit" value="Check existing opponents" id="checkexistingopp" name="checkexistingopp" />
           </form> 

          <form  id="AppendForm" role="form" method="post" >

            </form>

控制台截图 控制台截图

但是点击按钮什么都没有发生有人可以提出任何解决方案吗?感谢您提前回答

标签: phphtmljquery

解决方案


为什么不直接让 PHP 渲染表单元素呢?这些似乎都不需要任何 JavaScript。在这种情况下,Javascript/jQuery 没有增加任何价值。

例如

  $echomsg = "";

  if ($results = $wpdb->get_results( $sql))
  {
    $c = 0;

    foreach ($results as $result)
    {
      $linkid = $result->LinkId;
      $RefNumber = $result->refnumber;
      $case_id = $result->case_id;
      $opponent_id = $result->opponent_id;
      $opponent = $result->Opponent;
      $c++;  //counter to differentiate names and ids of html elements
    
      if (isset(opponent_id)) {
        $echomsg .= '<br><br>
          <input type="hidden" id="LinkId'.$c.'" name="LinkId'.$c.'" value="'.$linkid.'" />
          <p>Opponent No'.$c.'</p>
          <select id="opponent_id'.$c.'" name="opponent_id'.$c.'" class="form-control input sm select2">'.$OpponentOptions.'
          <option value="$opponent_id" selected>'.$opponent.'</option>
          </select>';
      }
   }

   //....
  ?>
  <form  id="AppendForm" role="form" method="post">
    <?php echo $echomsg; ?>
  </form>  

注意我不知道$OpponentOptions应该从哪里来?我想这是在您的脚本中较早的地方设置的。在没有其他信息的情况下,我会认为它是正确且有意义的。


推荐阅读