jquery / Ajax从文本链接获取data-id的值

时间:2016-06-24 17:04:22

标签: php ajax

我有一个我需要修改的非常旧的脚本。您将从代码中注意到它使用的是mysql_query(),但这不是我的问题。

我在名为surveycommentslist.php的文件中有一个文本链接。该链接打开一个jquery模型窗口,我需要捕获用户输入的文本,然后将其保存到mysql以及链接data-id的值,该值告诉我连接注释的唯一用户ID。我的问题是我无法使用下面的代码获取data-id的值。

这是我的代码

  <html>
    <head>
    <!-- common scripts -->
    <!-- jQuery library -->
        <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.1/jquery.js"></script>
        <!-- jQuery migrate -->
        <script src="js/jquery-migrate-1.2.1.min.js"></script>
    <!-- bootstrap framework plugins -->
        <script src="bootstrap/js/bootstrap.min.js"></script>
    </head>
    <body>
    <script>
    $(document).on('click', '.reply', function()
    {
       //get acommentuid
       var val = $(this).attr('data-id');

       $.post('surveycommentslist.php', {acommentuid: val}, function(data)
        {
          console.log(data);
        });
    });
    </script>

    <?php
         //lets list comments
          $scommentsql = mysql_query("SELECT * FROM survey_comments 
                       WHERE surveyid=$surveyid  ORDER BY commentdate asc");
          while($scrows = mysql_fetch_array($scommentsql))
            {
                extract($scrows);
                $the_comment = stripslashes($the_comment);
                $commentdate = date("m/d/Y h:ia", strtotime($commentdate));
                if($touid > 0) { $indent = "margin-left:35px"; }

                //get name of person making the comment
                  $nsql = mysql_query("SELECT fname, lname, userlevel, id AS scommentid FROM users WHERE id=$uid LIMIT 1");
                  $namerow = mysql_fetch_array($nsql);
                  $commenters_fname = stripslashes($namerow['fname']);
                  $commenters_lname = stripslashes($namerow['lname']);

                  if($namerow['userlevel'] > 19) 
                    {
                       $adminicon = "<img src='./img/admin_smicon.png' alt='admin'>";
                    }

                 echo "<div class='ch-message-item clearfix' style='$indent'>
                           <div class='ch-content'>
                               $the_comment
                           </div>
                           <p class='ch-name'>
                               <strong>$adminicon $commenters_fname $commenters_lname</strong>
                               <span class='muted'>$commentdate</span>";

                               if($touid == 0) 
                                 {
                                    echo " <a href='#switch_modal' class='reply btn btn-default id='$scommentid' btn-small' data-toggle='modal' data-id='$scommentid'>REPLY</a>";
                                 }
                    echo "</p>
                       </div>";
          }

6 个答案:

答案 0 :(得分:0)

$(document).on('click', '.reply', function(e)
    {
      e.preventDefault();
       //get acommentuid
       var val = $(this).data('id');

       $.post('surveycommentslist.php', {acommentuid: val}, function(data)
        {
          console.log(data);
        });
    });

答案 1 :(得分:0)

可能只是REPLY中单引号和双引号的问题。你说$scommentid有一个值,所以我假设它只是一个回声问题。试试这些:

//codes
.
.

//RE-POSITION class values from id value
echo "<a href='#switch_modal' class='reply btn btn-default btn-small' id='$scommentid' data-toggle='modal' data-id='$scommentid'>REPLY</a>";  

//or by concatenation if I am wrong with the above solution
echo "<a href='#switch_modal' class='reply btn btn-default id=".'"$scommentid"'." btn-small' data-toggle='modal' data-id='$scommentid'>REPLY</a>";

//or by using the &quot; if I am wrong with the above solutions
echo "<a href='#switch_modal' class='reply btn btn-default id=&quot;$scommentid&quot; btn-small' data-toggle='modal' data-id='$scommentid'>REPLY</a>";  

.
.
//codes

答案 2 :(得分:0)

未正确关闭类属性。行情问题。

更改此

echo " <a href='#switch_modal' class='reply btn btn-default id='$scommentid' btn-small' data-toggle='modal' data-id='$scommentid'>REPLY</a>";

echo "<a href='#switch_modal' class='reply btn btn-default' id='$scommentid' btn-small' data-toggle='modal' data-id='$scommentid'>REPLY</a>";

答案 3 :(得分:0)

当我将代码复制粘贴到文件中时在浏览器中执行该操作,它会显示&#34; data-id&#34;属性为空:http://screencast.com/t/pasXI14dp0x。这是由于早期消息中指出的HTML不正确。

即使在更正之后,仍然有“小”字样。不属于任何属性的文本。

错误的HTML是:

echo " <a href='#switch_modal' class='reply btn btn-default id='$scommentid' btn-small' data-toggle='modal' data-id='$scommentid'>REPLY</a>";

正确的HTML应该是:

echo " <a href='#switch_modal' class='reply btn btn-default btn-small' id='$scommentid' data-toggle='modal' data-id='$scommentid'>REPLY</a>";

您可以尝试的另一种方法是在&#34; data-id&#34;中对某些值进行硬编码。属性&amp;找出它是否被通过。如果可行,则问题在于HTML&amp;应使用上面更正的HTML代码修复。

答案 4 :(得分:0)

您的HTML标记错误

  

您可以通过执行查看源来检查

更改以下代码

echo " <a href='#switch_modal' class='reply btn btn-default id='$scommentid' btn-small' data-toggle='modal' data-id='$scommentid'>REPLY</a>";

<强>与

echo "<a href='#switch_modal' class='reply btn btn-default btn-small' id='$scommentid' data-toggle='modal' data-id='$scommentid'>REPLY</a>";

答案 5 :(得分:0)

我建议您使用return json_encode($data)将数据从MySQL返回为JSON,其中$data是一组键值对,当您在脚本标记/ JavaScript中获取数据时,在那里构建HTML并将其添加到div而不是从服务器返回HTML。

在脚本标记/ JavaScript中构建HTML时,可以添加JSON响应中的数据并循环注释。

也许那只是我,但我喜欢干净的代码:)

相关问题