0

你好明智的stackoverflow用户

我目前正在使用 PHP 开发一个私人消息系统,并且我一直在制作一个删除多个选定消息的函数。就像现在一样,它正在工作,但我收到警告:

Warning: Invalid argument supplied for foreach() in /var/www/PM/delete.php on line 7

我使用 jquery 将数据发送到另一个名为 delete.php 的 php 文件。

首先,我的复选框如下所示:

<input type="checkbox" class="message_checkbox" name="pms[]" value="<? echo $loadData['id']; ?>" id="<? echo $loadData['id']; ?>">

我的 jquery 脚本如下所示:

<script>
$(function(){
    $("a.delete").click(function(){
        var message = new Array();
        $("input[@name='pms[]']:checked").each(function() {
            message.push($(this).val());
        });

        $.ajax({
            type: 'POST',
            url: 'PM/delete.php',
            data: { id: message },
            success: function(html) {
                alert("all done");
            }
        });
    })
})
</script>

我的 delete.php 如下所示:

<?php ob_start();
include("../config.php");

$rows2del = $_POST["id"];

foreach($rows2del as $id) /* Line 7*/
{
        mysql_query("UPDATE user_pm SET reciev_deleted = '1' WHERE id = '$id'") or die(mysql_error());
}   
?>

谁能告诉我我做错了什么?
注意:我在 jquery 和 javascript 领域非常新!

4

2 回答 2

0

您的选择器错误,您可能$("input[@name='pms[]']:checked")没有@name考虑 xpath 的属性。它应该只是$("input[name='pms[]']:checked")

因此,您在这里传递了一个空数组,data: { id: message },它不会将id参数添加到您的发布请求中,因此$_POST["id"];将为空。

于 2012-07-25T22:18:37.140 回答
0

您必须将其作为 json 字符串传递到 post 变量中,然后在服务器端进行 json 解码。

 this is the correct way to push an value inside an json object array
 message.push({id: $(this).val()});

 pass it as string in the post
 data: 'message='+JSON.stringify(message),
于 2012-07-25T23:11:43.460 回答