Intereting Posts
База данных для содержимого – ОК для хранения HTML? Автоматическое определение текущего локального времени пользователя с помощью JavaScript или PHP правильные заголовки PHP для загрузки pdf-файлов Как безопасно хранить пароли пользователей? SPLFileInfo: получить имя файла без расширения Область множественных файлов и пространств имен Примечание. Неопределенная переменная: _SESSION в строке "" в строке 9 Неопределенное свойство: Illuminate \ Database \ Eloquent \ Collection :: Laravel 5.2 Как запустить скрипт оболочки с живой обратной связью с PHP? Перенаправление с использованием PHP, а не перенаправление в Cpanel Определение летнего времени PHP Использование NetBeans для отладки PHP? Лучшая практика хранения папок Codeigniter UTF-8: русские символы и символ евро не отображаются и сохраняются в таблице mysql Применение Laravel принадлежит одному продукту для одной или какой-либо категории

dataType: «json» не будет работать

Я пытаюсь отправить несколько переменных из php-файла в ajax, используя json в массиве. Код в файле php отлично работает и делает все с моей базой данных, как должно. Но как только я добавляю dataType: «json» в ajax, в php-файле больше ничего не происходит. Я немного поработал в Google, и некоторые люди упомянули, что это может быть проблема с браузером, но пока это не работает ни в firefox, chrome, ни в IE. Я использую последнюю версию jQuery.

Это то, что происходит внутри php:

<?php //Create variables and update database echo json_encode(array("id" => "$realid", "un" => "$username", "date" => "$date")); ?> 

И это код ajax:

 .ajax( { url: 'UpdateComments.php', type: 'POST', dataType: "json", data: { type: "add", comment: $("#comment").val(), id: videoID }, success: function (data) { //Get the data variables from json and display them on page } }); 

Я не согласен с этим, любой совет будет очень признателен!

Общей проблемой является то, что браузер печатает «что-то еще» перед JSON, будь то какой-то читаемый или нечитаемый (невидимый) символ. Попробуйте сделать что-то вроде этого:

 <?php //at the very beginning start output buffereing ob_start(); // do your logic here // right before outputting the JSON, clear the buffer. ob_end_clean(); // now print echo json_encode(array("id" => $realid, "un" => $username, "date" => $date)); ?> 

Теперь все данные дополнения (до JSON) будут отброшены, и вы должны работать с ним …

Я считаю, что если вы используете dataType, вы должны использовать contentType: «Официальным типом интернет-медиа для JSON является приложение / json».

 .ajax( { url: 'UpdateComments.php', type: 'POST', contentType: "application/json",//note the contentType defintion dataType: "json", data: { type: "add", comment: $("#comment").val(), id: videoID }, success: function (data) { //Get the data variables from json and display them on page } }); 

Если вы устанавливаете dataType в jQuery, это фактически устанавливает атрибут заголовка Content-Type. Возможно, в вашем скрипте PHP вам нужно объявить этот тип MIME как принятый. Вы заметили, что код даже входит в скрипт PHP при выполнении запроса? Я сомневаюсь, что это проблема с браузером, если она не работает в Firefox, Chrome или IE.

Чтобы получить лучшую перспективу в запросе AJAX, подпишитесь на ajaxBeforeSend (не уверен, что имя события правильно проверяет jQ docs) и регистрирует объект xhr.

Я бы не использовал dataType, если он вызывает проблемы, также я лично не использовал объект в качестве значения данных, прежде чем, возможно, что-то с этим связано?

В любом случае, я изменил основную рутину ajax, надеюсь, это поможет.

 $.ajax( { url: 'UpdateComments.php', type: 'POST', data: { type: "add", comment: $("#comment").val(), id: videoID }, success: function (response) { //Get the data variables from json and display them on page var data = $.parseJSON(response); alert(data.id); } }); 

Попробуйте определить обработчик ошибок как часть вызова $ .ajax

 $.ajax({ ..., error: function(xml, error) { console.log(error); } }); 

Затем проверьте консоль отладки на наличие ошибок, которые могут помочь вам диагностировать проблему.