Error Unexpected end of JSON input

231
12 декабря 2017, 20:50

Uncaught SyntaxError: Unexpected end of JSON input

at JSON.parse (<anonymous>)
at Function.jQuery.parseJSON (jquery-1.12.4.js:9011)
at Object.success (script.js:19)
at fire (jquery-1.12.4.js:3232)
at Object.fireWith [as resolveWith] (jquery-1.12.4.js:3362)
at done (jquery-1.12.4.js:9840)
at XMLHttpRequest.callback (jquery-1.12.4.js:10311)

Перегулил что смог - решения проблемы не нашел. Понял что не может передать запрос почему-то, но, почему - не понял.

$.ajax( {
    url: '/' + url,
    type: 'POST',
    data: name + '_f=1' + str,
    cache: false,
    success: function( result ) {
        obj = jQuery.parseJSON( result ); // Комментарий
        if ( obj.go ) go(obj.go);
        else alert( obj.message );
    }
} );

ошИбиться при выполнении следующего кода:

    if ( $_SESSION['confirm']['type'] == 'registration' ) {
        if ( $_SESSION['confirm']['code'] != $_POST['code'] ) {
            message('Код подтверждения регистрации указан неверно!');
            mysqli_query($connect, 'INSERT INTO `users` VALUES ("", "'.$_SESSION['confirm']['email'].'", "'.$_SESSION['confirm']['password'].'")');
            unset($_SESSION['confirm']);
            go('login');
        }
    } else not_found();

А конкретно при запросе в БД - запись в БД не создает, функцию 'go'(редирект) не выполняет.

Answer 1
  1. В ajax запросе нигде не указана переменная code. Если Я правильно понимаю, то это скорее всего должно быть как-то так:

    $.ajax( {
      url: '/' + url,
      type: 'POST',
      data: ({ code : name + '_f=1' + str }), // Должна передаваться переменная.
      cache: false,
      success: function( result ) {
        obj = jQuery.parseJSON( result );
        if ( obj.go ) go(obj.go);
        else alert( obj.message );
      }
    } );
    
  2. Твой код, куда приходит запрос, должен возвращать что-то в json. К примеру

    die(json_encode(['status'=>'ok']));
    

И не должен делать никаких редиректов и выводить других сообщений.

P.S. Советую всегда выводить в консоль переменную, которая приходит в success. Тогда есть вероятность, что ты поймешь в чем суть ошибки, ведь если PHP вывел ошибку, то именно текст ошибки мог вернуться тебе в JS.

P.P.S Тебе стоит еще немного подучить AJAX, к примеру уроки от Ruseller. На его сайте куча полезных вещей для разработчика.

READ ALSO
Как задать отсчет времени от указаного?

Как задать отсчет времени от указаного?

Как начать отсчет от заданного времениДля чего нужно? На хостинге у меня сейчас 12:00 а у моего друга 04:00 утра

239
Как грамотно реализовать перенаправление на новую структуру URL сайта (с названий на id)

Как грамотно реализовать перенаправление на новую структуру URL сайта (с названий на id)

Сайт (PHP, Apache, htaccess) представляет собой некое подобие каталога организаций и его URL состояли из названий категорий и городов на кириллице:

191
Единая точка входа PHP

Единая точка входа PHP

Делаю небольшое приложение по заданиюВроде единую точку входа реализовал верно, но проверяющий по прежнему говорит, что нет единой точки...

296
Kohana ajax выдает ошибку Error 403. Почему и как обойти?

Kohana ajax выдает ошибку Error 403. Почему и как обойти?

Я разрабатываю сайт на фреймворке KohanaУ меня есть код, который будет повторяться

265