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

post 変数で json 文字列として渡してから、サーバー側で 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 に答える
0

あなたのセレクターは間違っています.xpathについて考えているかもしれ$("input[@name='pms[]']:checked")ない属性はありません. @nameそれはちょうどあるはずです$("input[name='pms[]']:checked")

したがって、ここで空の配列を渡していますが、これはパラメーターを投稿リクエストにdata: { id: message },追加しないため、空になります。id$_POST["id"];

于 2012-07-25T22:18:37.140 に答える