Возврат ответа Ajax и пустой строки и тега html-комментария перед json

#php #jquery #json #ajax

#php #jquery #json #ajax

Вопрос:

Я отправляю запрос ajax и ожидаю получить ответ json. Но в моем ответе у меня есть пустая строка и html-тег комментариев ( <!-- --> ). Как я могу удалить эту ненужную пустую строку и символы?

P.S: Это происходит, когда я размещаю веб-сайт онлайн.

 $.ajax({
    url: "edit_row.php",
    method: "post",
    data: {id:id},
    success: function(data){
        alert(data);
    }
});
  

php:

 <?php
    $id = $_POST['id'];
    $data = array();
    -----
    sql query
    ------
    while($query = mysqli_fetch_assoc($sql)){
        $data[] = $query;
    }
    print json_encode($data);
>?
  

Я ожидаю, что результат будет примерно таким:

 [{"id":"1", "asd":"dsa",...}]
  

Но я получаю:

 
<!-- -->[{"id":"1", "asd":"dsa",...}]
  

Комментарии:

1. >? это неправильный способ обхода. Это только ошибка копирования и вставки? Возможно, у вас есть пробел перед открывающим тегом PHP

2. Также я не могу найти разницу между ожидаемым и точным результатом, который вы получаете

3. Затем проверьте, есть ли у вас пробел / разрыв строки после любого закрывающего ?> тега. В чистых PHP-файлах рекомендуется не закрывать PHP-теги (только по этой причине). Легко случайно добавить пробелы.

4. это означает, что в вашем коде где-то вы вывели этот материал. Проверьте один раз. Также ?> в конце вашего файла [как рекомендуется для решения проблемы с пустой строкой / пробелами]

5. Вы всегда можете использовать headers_sent() перед выводом вашего json, чтобы отследить, где произошел предыдущий вывод.

Ответ №1:

если вы вообще отправляете var id и возвращаете пустой, то при успешном вызове ajax измените код.Это временное решение, но вам следует еще раз просмотреть код в HTML.

 $.ajax({
    url: "edit_row.php",
    method: "post",
    data: {id:id},
    success: function(data){
        data=data.replace("<!--","");
        data=data.replace("-->","");
        alert(data);
    }
});
  

Ответ №2:

Вы должны проверить все файлы, которые включены в edit_row.php файл, и убедиться <!-- --> , что они не отображаются.

Тем не менее, вы сталкиваетесь с проблемой, можете ли вы предоставить edit_row.php код.

Ответ №3:

Я не уверен, в чем ваша проблема, но важно всегда оборачивать свой php/code скрипт вокруг оператора try and catch, чтобы получать ошибки и предупреждения php, если они есть, в вашем случае, например

 <?php

try {
  $id = $_POST['id'];
  $data = array();
  -----
  sql query
  ------
  while($query = mysqli_fetch_assoc($sql)){
      $data[] = $query;
  }
  print_r(json_encode($data));
}

catch(Exception $e) {
  echo 'Message: ' .$e->getMessage();
}
?>
  

Я также изменил ваш закрывающий тег php с >? на ?> на, хотя я не уверен, что это вызывает проблему. Также изменен print на print_r, что лучше для удобства чтения массивов и объектов.