@alexmixaylov

Почему не срабатывает success когда ajax-ом отправляю данные?

На страничке имеется яваскрипт, который парсит нужные элементы и закидывает это дело в объект
jQuery(function ($) {
    var title = $('h1').attr('id') + ' ' + $('h1').text();
    var docx = {
        title: title,
        row: [],
    }

    $('.toDocx').each(function (i) {
        docx.row[i] = {
            somekey: $.trim($(this).text())
        }
    });

    $('#jquery-word-export').click(function () {
        $.ajax({
            url: '/docxgen/index.php',
            type: "POST",
            dataType: 'JSON',
            data: 'arrObjects=' + JSON.stringify(docx),
            success: function (data) {
                console.log(data);
            },
            error: function (data) {
                console.log(data);
            }
        });
    });
});

все нормально отрабатывает в консоли подготовленный объект выглядит так
spoiler
{title: "ID3117 ↵ УДИВИТЕЛЬНОЕ ПУТЕШЕСТВИЕ ПО ИЗУМРУДНОМУ ОСТРОВУ ",
row: Array(3)
0:{somekey: "Даты заезда: август: 05, 12, 19, 26сентябрь: 08, 22октябрь: 06"}
1:{somekey: "Тур, в котором Вы неизменно почувствуйте себя остров!"}
2:{somekey: "Дни: 8"}

обработчик PHP
$data = json_decode($_POST['arrObjects'], true);
echo $data['title'];

// вообще то success не срабатывает, даже если просто тупо текст вывести
// например echo 'title' ;

только если полностью убрать вывод данных из обработчика, тогда срабатывает success
что за прикол? никак не разберусь
  • Вопрос задан
  • 544 просмотра
Пригласить эксперта
Ответы на вопрос 3
AlexMaxTM
@AlexMaxTM
Должно быть так:
$data = json_encode($_POST['title'], true);
echo $data;

А вообще еще лучше сделать очистку вывода перед echo, чтобы случайно ни один лишний символ не попал в вывод - формат json достаточно строгий и даже лишний пробел приведет к ошибке.
Ответ написан
Комментировать
@BorisKorobkov Куратор тега PHP
Web developer
Почему не срабатывает success когда ajax-ом отправляю данные?

Потому что он ожидает
dataType: 'JSON',

, а приходит
...row: Array(3)...
Ответ написан
@shelomanovd
Убери dataType
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы