it-swarm.com.ru

Неожиданный конец ввода JSON из вызова ajax

Я работал над удалением постов в моем проекте. Все это прекрасно работает в PHP, но теперь я хотел бы сделать это в Ajax, чтобы предотвратить обновление и все.

В любом случае, когда я выполняю свой вызов ajax, я получаю сообщение об ошибке:

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)

Это говорит о том, что эта ошибка в строке 35, строка 35 отправляет меня в 

console.log(error);

В любом случае, для лучшего обзора, вот мой вызов 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();
    });
});

И мой код 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);
    }

?>

Я пробовал много вещей, таких как изменение dataType и contentType, но, похоже, ничего не получилось. 

6
Albert.tomasiak

Ваш запрос неверен, вам не следует отправлять json, если вы планируете использовать суперглобальный $ _POST. Отправить как обычные URL-адреса закодированные данные формы

    $.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

Попробуйте изменить dataType на «text», а contentType на «application/json»

5
Taoufiq BOUKCHA

Вы «удаляете» пост дважды.

Удалить эту строку: $post->deletePost($deletePostID);

1
Felippe Duarte

Это очень странная проблема внутри фреймворков и PHP в целом, в вашем контроллере просто:

echo(json_encode($status));

Работал на меня ..

0
Peace Ngara