Я получаю статус 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}}}} ';
все работает. Что это за ошибка? Откуда это могло произойти при ошибке?
благодаря
Ваш обработчик ошибок запускается и регистрируется:
Обратите внимание, что $.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, прежде чем отправлять его для проверки.