Нежелательная новая строка, возвращенная после запроса AJAX

Я использую запрос ajax для отправки комментариев в БД. Успешный ответ отмечен

1. OK 

Проблема в том, что ответ от скрипта php

 1. 2. OK 

Поэтому я отладил скрипт и отметил, что символ новой строки si добавляется, когда скрипт выполняет следующую строку:

 require_once($ABS_APPS."/quotes/classQuote.php"); 

После некоторых поисков я прочитал, что это может быть проблема спецификации (Byte Order Mark). Поэтому я только что загрузил и открыл файл classQuote.php шестнадцатеричным редактором и заметил, что нет спецификации … может ли кто-нибудь мне помочь?

PS Все файлы в моем проекте заключены в UTF-8, и я в настоящее время устанавливаю NetBeans, который не добавляет спецификацию в файлы.

Это инкриминируемый скрипт:

 // Send new comment to DB case "send": $notification = new Notification(); if($comment->insert($_POST["username"], $_POST["comment"], $_POST["app"], $_POST["entryId"])){ switch ($_POST["app"]) { case "quotes": require_once($ABS_APPS."/quotes/classQuote.php"); $quote = new Quote(); $quoteData = $quote->get($_POST["entryId"]); // If user comments his own entry we don't have to send the notification if($quoteData["UserAuthor"] != $_SESSION["User"]){ $notification->newComment($_POST["username"], $quoteData["UserAuthor"], $_POST["entryId"], $_POST["app"]); } break; default: break; } echo "OK"; } else { echo "ERROR"; } break; 

  1. Убедитесь, что ничего нет, прежде чем открывать <?php в classQuote.php
  2. Убедитесь, что после закрытия нет завершающих символов / строк ?>
  3. Проверьте, существует ли где-нибудь тег ?> строках кода (следуйте потоку из вашего __construct и где вы вызываете материал)

Infact, может оказаться полезным оставить закрывающий тег. Другая возможность такова:

  // capture output ob_start(); require_once($ABS_APPS."/quotes/classQuote.php"); $quote = new Quote(); $quoteData = $quote->get($_POST["entryId"]); // If user comments his own entry we don't have to send the notification if($quoteData["UserAuthor"] != $_SESSION["User"]){ $notification->newComment($_POST["username"], $quoteData["UserAuthor"], $_POST["entryId"], $_POST["app"]); // trim whitespace echo trim(ob_get_clean()); } 

Если вы используете jQuery

вы можете использовать jQuery.trim (responseData) в своем обратном вызове AJAX, чтобы избавиться от пробелов

см. также здесь http://api.jquery.com/jQuery.trim/

Надеюсь, поможет

Я исправил эти

  1. Удостоверьтесь, что ничего нет, прежде чем начать открытие
  2. Убедитесь, что после закрытия нет завершающих символов / строк?>
  3. Проверьте, существует ли где-нибудь тег?> В строках кода (следуйте потоку из вашего __construct и где вы вызываете материал)