Ошибка Unexpected token < in JSON at position 0

88
21 июня 2021, 03:20

Имеется такой код:

$(document).ready(function() {
$('form').submit(function(event) {
    var json;
    event.preventDefault();
    $.ajax({
        type: $(this).attr('method'),
        url: $(this).attr('action'),
        data: new FormData(this),
        contentType: false,
        cache: false,
        processData: false,
        success: function(result) {
            json = jQuery.parseJSON(result);
            if (json.url) {
                window.location.href = '/' + json.url;
            } else {
                alert(json.status + ' - ' + json.message);
            }
        },
    });
});
});
.......
<form action="/admin/addBanner" method="post">
<div class="control-group">
    <div class="form-group floating-label-form-group controls">
        <p><input type="text" class="form-control" name="name" placeholder="Имя"></p>
    </div>
</div>
<div class="form-group">
    <button type="submit" class="btn btn-secondary" id="sendMessageButton">Отправить</button>
</div>
</form>

При нажатии на кнопку на сервере в переменной $_POST ничего нету. Открываю инспектор код в хроме. Там такая ошибка: VM732:1 Uncaught SyntaxError: Unexpected token < in JSON at position 0 at Function.parse [as parseJSON] () at Object.success (form.js:13) at i (jquery.js:2) at Object.fireWith [as resolveWith] (jquery.js:2) at A (jquery.js:4) at XMLHttpRequest. (jquery.js:4) В чем здесь проблема? Или подскажите как отладить, куда смотреть

Answer 1
  1. Задайте свойство contentType: 'application\json' в js-скрипте.
  2. Убедитесь что ваша страница, на которую идет запрос отправляет данные именно в JSON формате. Можно воспользоваться на сервере методом json_encode(), если у вас php сервер. Так же можно отправлять данные в виде XML, но для этого надо будет поменять параметр contentType: 'application\xml'.

Вообще выберите для себя некое правило, или же договоренность, с помощью которой ваш фронт(js+html, не важно) будет общаться с сервером - тут вам помогут заголовки, которые как раз таки и указываются в параметре contentType. Наиболее популярный способ отправки\получения данных - JSON, он поддерживается на большинстве платформ.

Answer 2

У вас возвращается html вместо json.

READ ALSO
redbean php создает новую строчку

redbean php создает новую строчку

Недавно начал использовать RedBeanPHP, всё нормально работало, пока я не попытался сделать изменение логина

112
не могу собрать проект в netbeans

не могу собрать проект в netbeans

Везде пишут про файл manifest, но у меня он не создаётся и нигде вообще не упоминается, main класс выбрал, но jar файл так и не запускается пишет:

91
Как сменить версию Java

Как сменить версию Java

У меня установлена java версии 18, но при выполнении команды java --version, получаю ответ что версия: openjdk 11

101