Björn C
Björn C

Reputation: 4008

No alert from Ajax call

I´m trying to alert some data from a Ajax call. Can anyone spot what I am doing wrong?

PHP

while($row = $stmt->fetch()){
    echo json_encode($row);
}
echo "Done!";

Result from Json_encode / Network Preview

{"flakId":"21098-10_flak-2"}{"flakId":"21098-10_flak-1"}Done!

JS

if(chosenObjNr){
    alert('I CAN see this alert')
    $.ajax({
        url:'php/update.php',
        type: 'POST',
        data: 'chosenObjNr=' + chosenObjNr,
        dataType: 'json',
        error: function (data){ alert("failed, i can see this!");},             
        success: function(data){  

            alert('I cannot see this alert!');
            alert(data);

            var data0;
            data0 = data[0];
            alert(data0);

            var falkId;
            flakId = data[0];
            alert(flakId);

            console.log(data);
        }

    });

};

RESULT

No alert and nothing in the console.

Upvotes: 0

Views: 223

Answers (1)

vaso123
vaso123

Reputation: 12391

The problem is, that the success part of the ajax never will run. You defined the dataType as a json, so it expecting json. Your PHP is echos 2 json and an unwanted string.

So, to check what is your error add the fail function as Sina sad in the comment:

if (chosenObjNr) {
alert('I CAN see this alert')
$.ajax({
    url: 'php/update.php',
    type: 'POST',
    data: 'chosenObjNr=' + chosenObjNr,
    dataType: 'json',
}).done(function (data) {
    alert('I cannot see this alert!');
    //Do what you want to do here
}).fail(function (msg) {
    alert('An error occured: ' + msg.statusText);
});

}

And, if you want to fix your .php remove the echo 'Done'; part, and add your records to an array, and when its done, encode it to json:

$return = array();
while ($row = $stmt->fetch()) {
    $return[] = $row;
}
echo json_encode($return);

Upvotes: 2

Related Questions