Albert.tomasiak Albert.tomasiak - 7 months ago 3981
PHP Question

Unexpected end of JSON input from an ajax call [SOLVED]

I have a real head scratcher on my hands.
I've been working on a delete post functionality in my project. It all works fine in PHP, but now I'd like to do that in Ajax, to prevent the refresh and all.

Anyway, when I perform my ajax call, I get an error:

SyntaxError: Unexpected end of JSON input
at Object.parse (native)
at n.parseJSON (http://localhost/imdstagram/public/js/jquery-2.2.3.min.js:4:6401)
at Ab (http://localhost/imdstagram/public/js/jquery-2.2.3.min.js:4:8347)
at z (http://localhost/imdstagram/public/js/jquery-2.2.3.min.js:4:11804)
at XMLHttpRequest.<anonymous> (http://localhost/imdstagram/public/js/jquery-2.2.3.min.js:4:15680)


It says that this error is on line 35, line 35 sends me to

console.log(error);


Anyway, to give you a better view, here is my Ajax call:

$(document).ready(function(){

$(".post__delete").on("click", function(e){
var postDeleteID = $('.deleteID').val();

$.ajax({
url: "ajax/deletePost.php",
type: "POST",
data: JSON.stringify(postDeleteID),
dataType: 'json',
contentType: false,
cache: false,
processData: false,
success: function(data)
{

},
error: function (request, status, error) {
console.log(error);
}
});

e.preventDefault();
});
});


And my deletePost.php code:

<?php
include_once("../classes/Post.class.php");
session_start();
$post = new Post();

if(!empty($_POST)){
$deletePostID = $_POST['deletePostID'];

$post->deletePost($deletePostID);

if($post->deletePost($deletePostID)){
$status['delete'] = "success";
}else{
$status['delete'] = "failed";
}

header('Content-Type: application/json; charset=utf-8', true);
echo json_encode($status);
}

?>


I've tried many things like changing the dataType and contentType, but nothing seems to work out.

Thanks in advance for your help.

Answer

Your request is wrong, you should not be sending json if you expect to use the $_POST super global. Send it as regular url encoded form data

    $.ajax({
        url: "ajax/deletePost.php", 
        type: "POST",             
        data: {postDeleteID: postDeleteID},
        dataType: 'json',
        cache: false,
        success: function(data)
        {

        },
        error: function (request, status, error) {
            console.log(error);
        }
    });