Pete
Pete

Reputation: 514

Passing array with Ajax to PHP script results in empty post

I want to pass an array from a HTML site to a PHP script using AJAX

JS

function selectPictures() {
    //selected Pictures is my JS array
    var jsonArray = JSON.stringify(selectedPictures);

    var request;
    request = $.ajax({
        url: "selectedPictures.php",
        type: "POST",
        data: {
            data: jsonArray
        },
        cache: false
        success: function () {
            alert('OK');
        }
    });
}

HTML

href="selectedPictures.php" onclick="selectPictures();"

PHP

if (isset($_POST['data'])) {
    $data = json_decode(stripslashes($_POST['data']));
    foreach($data as $d) {
        echo $d;
    }
}

Actually I want to send the data to another HTML page and then include the PHP script, but I don't understand why this example does not even work. The $_POST['data'] is not set.

UPDATE Ok, the Ajax post is actually working, as I see the HTTP request is successful BUT: I cannot access the variable instantly. I need to access the values of the passed array at once to execute another PHP script. When I want to do this, I get an undefined index error. Also at the time when the isset function is executed, it returns false (despite the successful HTTP request).

Upvotes: 1

Views: 853

Answers (1)

Xrymz
Xrymz

Reputation: 171

HTML

<a href="#" id="selectPictures">click</a>

JS

$(function(){
  $('#selectPictures').click(function(){
    var jsonArray = JSON.stringify(selectedPictures);   
    var request = $.ajax({
    url: "selectedPictures.php",
    type: "POST",
    data: {data: jsonArray},
    cache: false,
    success: function(data){alert(data);}
    });
  });
});

Use f12 in chrome to see errors, you forgot to add a comma after the "cache: false"

Upvotes: 3

Related Questions