Состояние jQuery AJAX 200, но таинственная синтаксическая ошибка

Я получаю статус 200, когда я использую jQuery AJAX. Тем не менее, я также получаю синтаксическую ошибку где-то. Я отправляю на PHP следующим образом:

function submit_order(orderInformation) { $.ajax({ type: 'post', url: 'queries/submit_order.php?<?=time();?>', data: 'orderInformation=' + JSON.stringify(orderInformation), dataType: 'json', success: function (returnedData) { console.log(returnedData); $('#content_container').fadeOut(340, function () { var new_content = $('#content_container').clone(false); $('#content_container').remove(); new_content.css('display', 'none'); new_content.children().remove(); new_content.appendTo('body'); $('#content_container').vkTemplate('templates/confirm_template.tmpl?<?=time()?>', returnedData, function (el, data, context) { console.log('success'); $('#content_container').fadeIn(340); }); }); }, error: function (xhr, ajaxOptions, thrownError) { console.log(xhr.status); console.log(thrownError); } }); } 

Мой PHP-код довольно прост:

 $order_information = json_decode($json_str, true); //go through the array and make an email out of it //add a few elements to the array //send the email //send back a json string with the added elements echo json_encode($order_information); 

Но я понимаю:

скриншот ошибки

И странно, если я console.log(JSON.stringify(orderInformation)) вставку строки JSON из console.log(JSON.stringify(orderInformation)) на страницу PHP:

 $json_str = '{"sector_0":{"file":[],"sector_info":{"sector_label":"NIO","purchase_order":"test","proof":false},"lines":{"line_0":{"description":"test","quantity":"2","productId":"1","addressId":"20","shipViaId":"1","notes":false}}}} '; 

все работает. Что это за ошибка? Откуда это могло произойти при ошибке?

благодаря

Ваш обработчик ошибок запускается и регистрируется:

  • xhr.status (200)
  • thrownError (синтаксическая ошибка)

Обратите внимание, что $.ajax с dataType: json обработчик ошибок, даже если сервер возвращает 200 OK но ответ недействителен JSON. Синтаксическая ошибка не в вашем JavaScript-коде, а в JSON. Определите, откуда приходит < и убедитесь, что ваш PHP-скрипт отправляет действительный JSON.

Совет: откройте консоль и посмотрите на вкладку сети; все XHR регистрируются там вместе с заголовками и телом.

200 – это ответ Ok на сервере http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

У вас есть синтаксическая ошибка на вашем сервере ответа, возвращает недопустимый json

Поскольку ваш PHP-код отлично подходит, должно быть что-то еще. Ошибка синтаксиса или ваша фреймворк возвращает json, завернутый в html …

Используйте правильные инструменты, чтобы узнать, что возвращается сервером. (firebug на firefox / инструменты разработчика на хроме)

На вашем изображении вы видите 0: "<" Это означает, что возвращаемая строка начинается с < – Это означает, что возвращается html.

Похоже, вы используете хром. Перейдите на вкладку «сеть» в chrome, и вы сможете увидеть исходный ответ для вашего запроса.

так что это ошибка php:

$sector_index не может быть запрограммирован. Можете ли вы var_dump его увидеть. что это?

Похоже, что <?=time()?> Не обрабатывается. Оповеди URL, прежде чем отправлять его для проверки.