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
   }
});

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

5
03 апр. '12 в 2:20
источник поделиться
5 ответов

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

<?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) будут отброшены, и вы должны заставить его работать...

6
03 апр. '12 в 2:40
источник

Я считаю, что если вы используете 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
 }
});
1
03 апр. '12 в 2:35
источник

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

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

0
03 апр. '12 в 2:32
источник

Я бы не использовал 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);
   }
});
0
03 апр. '12 в 2:32
источник

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

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

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

0
03 апр. '12 в 2:37
источник

Посмотрите другие вопросы по меткам или Задайте вопрос