Нежелательная новая строка, возвращенная после запроса AJAX
Я использую ajax-запрос для отправки комментариев в БД. Успешный ответ отмечен
1. OK
Проблема на самом деле в том, что ответ от php-скрипта
1.
2. OK
Поэтому я отладил скрипт и отметил, что символ новой строки si добавляется, когда скрипт выполняет следующую строку:
require_once($ABS_APPS."/quotes/classQuote.php");
После некоторых поисков я прочитал, что это может быть проблема со спецификацией (меткой порядка байтов). Поэтому я просто скачал и открыл файл classQuote.php
с помощью шестнадцатеричного редактора и заметил, что нет никакой спецификации... кто-нибудь может мне помочь?
P.S. Все файлы в моем проекте зашифрованы в 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;
3 answers
- Убедитесь, что перед открытием
<?php
в вашем classQuote.php - Убедитесь, что после закрытия
?>
нет завершающих символов/строк. - Проверьте, существует ли тег
?>
где-нибудь в строках кода (следуйте потоку из вашей __конструкции и где вы вызываете материал)
На самом деле, может оказаться полезным опустить закрывающий тег. Другая возможность заключается в следующем:
// 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/
Надеюсь, это поможет
Я исправил эти
- Убедитесь, что перед открытием ничего нет
- Убедитесь, что после закрытия нет завершающих символов/строк ?>
- Проверьте, существует ли тег ?> где-нибудь в строках кода (следуйте потоку из вашей __конструкции и где вы вызываете материал)