2014-07-20 31 views
0

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

我使用AJAX的HTML按钮之前:

 <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小时,然后我可以回答我编辑自己的帖子:

感谢您的答案,但我仍然得到一个未定义指数的消息:所以变量不postet命名 我update_pm_staus.php IHAVE更新我的脚本是:

<script type="text/javascript"> 

功能setRead(){$ 阿贾克斯({ 类型: “POST”, 网址: “update_pm_status.php”, data:{id:$(this).children(“[name ='gelesen']”)。val()}, 成功:function(msg){ alert(“Data Saved: “+ 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> 

回答

1

它看起来好像你是正确发送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: {}块,我已经更新了你的关键字:值对被命名为id,而不是name。如果你做了什么你的钥匙被命名为name时POST'ing,那么你会想升级你的PHP来寻找一个:

$id = $_POST['name']; 
+1

对不起,我upvoted,但后来意识到没有'select'?将它更新为'data:{id:$(this).children(“[name ='gelesen']”).val()},'这可以从几个'read'按钮中调用 –

+0

谢谢@RobSchmuecker,I做出了改变! –

0

遗憾的响应晚。我得到了工作。我使用

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

像这样的HTML

onclick="setRead(this.id); 

感谢所有帮助我:)