web-dev-qa-db-fra.com

Fin inattendue de l'entrée JSON à partir d'un appel ajax

J'ai travaillé sur une fonctionnalité de suppression de publication dans mon projet. Tout fonctionne bien en PHP, mais j'aimerais maintenant le faire en Ajax, pour empêcher l'actualisation et tout le reste.

En tout cas, quand j'effectue mon appel ajax, j'obtiens une erreur:

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)

Il dit que cette erreur est sur la ligne 35, la ligne 35 m'envoie à 

console.log(error);

Quoi qu'il en soit, pour vous donner une meilleure vue, voici mon appel à Ajax:

$(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();
    });
});

Et mon code deletePost.php:

<?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);
    }

?>

J'ai essayé beaucoup de choses comme changer le dataType et le contentType, mais rien ne semble fonctionner. 

6
Albert.tomasiak

Votre demande est erronée, vous ne devriez pas envoyer de JSON si vous comptez utiliser le super global $ _POST. Envoyez-le sous forme de données de formulaire encodées en url standard

    $.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);
        }
    });
5
Musa

Essayez de changer le dataType en 'text' et le contentType en 'application/json'

5
Taoufiq BOUKCHA

Vous "supprimez" le message deux fois.

Supprimer cette ligne: $post->deletePost($deletePostID);

1
Felippe Duarte

C'est un problème très étrange dans les frameworks et PHP en général, dans votre contrôleur:

echo(json_encode($status));

A travaillé pour moi ..

0
Peace Ngara