【问题标题】:update DB with onClick使用 onClick 更新数据库
【发布时间】:2014-07-20 09:16:14
【问题描述】:

我尝试通过仅单击我页面上的阅读按钮来更新我的下午消息的状态。所以我在这个网站上找到了一些解决方案,但它并不适合我。

我在 html 按钮之前使用了这个 ajax:

     <script type="text/javascript">
function setRead(){
      $.ajax({
        type: "POST",
        url: "update_pm_status.php",
        data: { name: $("select[name='gelesen']").val()},
        success:function( msg ) {
         alert( "Data Saved: " + msg );
        }
       });
  }
</script>

按钮样式为 css 并使用它自己的 javascript 来切换内容(打开/关闭) 所以我想通过打开消息来更新状态

<span class="toggleOpen" onclick="setRead()"><input type="hidden" method="post" name="gelesen" value="<?php echo $row['id']; ?>">lesen</span>

包含的网站是

<?php
ini_set('include_path', 'inc');
    require("connect.php"); 

        {
                  $id = $_POST['id'];


            $sql = "UPDATE
                    PMS
                    SET
                    gelesen = 'yes'
                    WHERE id = '".mysql_real_escape_string($id)."' AND gelesen = 'no'";
                    mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());

        }

但我总是收到未定义变量“id”的通知。 如何将此变量提供给包含的站点?


因为我必须等待 8 小时才能回复我编辑我的帖子:

感谢您的回答,但我仍然收到未定义索引的消息:名称 所以变量不是我的update_pm_staus.php的postet 我已将我的脚本更新为:

<script type="text/javascript">

函数 setRead(){ $.ajax({ 类型:“发布”, url: "update_pm_status.php", 数据:{ id: $(this).children("[name='gelesen']").val()}, 成功:功能(味精){ alert("数据保存:" + msg); } }); }

和 update_pm_status.php 到这个:

    ini_set('include_path', 'inc');
    require("connect.php"); 

            $id = $_POST['name'];

            $sql = "UPDATE
                    PMS
                    SET
                    gelesen = 'yes'
                    WHERE id = '".mysql_real_escape_string($id)."' AND gelesen = 'no'";
                    mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());

我也像这样更改了我的 html,希望让它发挥作用。

<span class="toggleOpen" onclick="setRead()" input type="hidden" method="post" name="gelesen" value="<?php echo $row['id']; ?>">lesen</span>

【问题讨论】:

    标签: javascript php jquery database


    【解决方案1】:

    看起来您发送的id 是正确的,但您发送的是name。您需要更新您的 JavaScript 以传递您期望的键:值对,以及您期望在 PHP 中使用的键名。

         <script type="text/javascript">
            function setRead(){
              $.ajax({
                type: "POST",
                url: "update_pm_status.php",
                data: { id: $(this).children("[name='gelesen']").val()},
                success:function( msg ) {
                  alert( "Data Saved: " + msg );
                }
              });
            }
         </script>
    

    您会注意到,在 AJAX 请求的 data: {} 块中,我已将您的键:值对更新为命名为 id,而不是 name。如果您在 POST 时将您的密钥命名为 name,那么您需要更新您的 PHP 以查找该密钥:

    $id = $_POST['name'];
    

    【讨论】:

    • 对不起,我投了赞成票,但后来意识到没有select?将其更新为 data: { id: $(this).children("[name='gelesen']").val()},,因为这可以从多个 read 按钮调用
    【解决方案2】:

    抱歉回复晚了。我得到了工作。我用

    <script type="text/javascript">
    function setRead($id){
      $.ajax({
        type: "POST",
        url: "update_pm_status.php",
        data: { id: $id}
       });  }
    

    还有这样的html

    onclick="setRead(this.id);
    

    感谢所有帮助我的人:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 2016-03-15
      • 2016-09-25
      • 2013-06-12
      • 1970-01-01
      • 2010-10-12
      • 2011-11-04
      相关资源
      最近更新 更多