使用onClick更新数据库 - javascript

我尝试通过仅单击页面上的“读取”按钮来更新我的pm中信使的状态。因此,我在此站点上找到了一些解决方案,但这对我而言实际上并不起作用。

我在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
我已经将我的脚本更新为:

<script type="text/javascript">

函数setRead(){
      $ .ajax({
        输入:“ POST”,
        网址:“ update_pm_status.php”,
        数据:{id:$(this).children(“ [name ='gelesen']”)。val()},
        success:function(msg){
         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>

参考方案

好像您正确发送了id,但您将其作为name发送。您想要更新JavaScript,以传递期望的key:value对,以及您在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: {}块中,我已将您的key:value对更新为id,而不是name。如果您在POST时执行名为name的键,则需要更新PHP来查找:

$id = $_POST['name'];

使用JS和PHP更改弹出窗口背景图像 - javascript

我有一个JS函数:function zoom(now) { document.getElementById("popup").style.display = "block"; document.getElementById("photos").style.backgroundImage = …

执行onclick时获得意外令牌 - javascript

我正在使用onclick事件从PHP调用JS函数。这是我的代码:我在一个函数中,因此我需要通过PHP来完成它,因为然后我会返回:$html = '<input type="checkbox" checked value="1" id="setGetSku" name="se…

PHP json_encode数组到javascript关联数组 - javascript

我有一些从PHP中读取的mysqli列。它正在完美地获取和回显。$results = mysqli_fetch_assoc(mysqli_query($conn, $querystring)); echo json_encode($results); //$results = {"title":"Sea Shells"…

PHP-显示特殊字符 - javascript

允许用户输入的代码段//fetch user input and pass it in URL alertify.prompt("Please enter note/remarks for this Form (optional):", function (e,value) { if (e) { alertify.success(…

JavaScript只在表格的第一行执行 - javascript

我有一个重复的表行15次。然后在其中一个字段上执行JS。问题在于它仅在表的第一行执行JS。我究竟做错了什么?PHP Table脚本: for ($x = 1; $x <= 15; $x++) { echo '<tr>'; echo '<td><input size="6" …