简体   繁体   中英

how to get the value of array sent from AJAX POST in php?

i am having a probelem with ajax multiple delete. I've sucessfully set the values of the checkbox slected in a variable. the problem i have to solve is how to get the value of the sent array in php. here is the ajax post code

<script>
    $("#delete-btn").click(function(e){
        e.preventDefault();
        var id = new Array();
        $(".check:checked").each(function() {
            id.push($(this).attr('value'));

        }); 
        $.post("../ajax/multiDelete.php",{id:id},function(data){
            alert(data);    
        });
    });
</script>

now, the php page

<?php

if(isset($_POST['id'])){
        $id = array($_POST['id']);

        foreach($id as $value){
                echo $value;    
        }
    }

?>

when the data is alerted, i only get "array"; i do not know about JSON, so if there is anything i can do without it then your help is most appreciated! thanks : D

Since id is an array and in your code you are wrapping it inside an array again. Instead of that,do this :

<?php
    if(isset($_POST['id'])){
            // Don't use array($_POST['id']) as id is already an array
            $id = $_POST['id'];
            foreach($id as $value){
                    echo $value; 
                    // Here you'll get the array values   
            }
        }

    ?>

If you want retun array from php - user json_encode()

echo json_encode(array($_POST['id']));

PS JS function alert() can`t print arrays or object. Use console.log(data) and you will see result in developer console of your browser.

Don't pass array variable in AJAX. Convert id array to JSON using JSON.stringify(id) .

In PHP backend,use

<?php $val = json_decode($_REQUEST['id']); 
       foreach($val as $ids){
           echo $ids;
        }

use $val array to proceed further in php.

This is not related to your question, but I just wanted to show you a better way of getting the id values, without creating a new array variable and then pushing items into the array, by using the jQuery .map() method:-

$("#delete-btn").click(function (e) {
    e.preventDefault();

    // Get all the values in the array 'id' variable
    var id = $(".check:checked").map(function () {
        return this.value || 0;
    }).get();

    $.post("../ajax/multiDelete.php", { id: id }, function (data) {
        alert(data);
    });
});

Hope this helps!

You have to access your checked value by-

<?php

if(isset($_POST['id'])){
        $id = array($_POST['id']);

        foreach($id as $value){
               foreach($value as $value1){
                echo $value1;    
        }
        }
    }

?>

Because this is an array inside array.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM