Нежелательная новая строка, возвращенная после запроса 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;
Author: siannone, 2012-07-21

3 answers

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

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

  // 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()); 
            }
 8
Author: mschr, 2012-07-21 15:30:08

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

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

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

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

 2
Author: williamC, 2012-07-22 09:00:49

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

  1. Убедитесь, что перед открытием ничего нет
  2. Убедитесь, что после закрытия нет завершающих символов/строк ?>
  3. Проверьте, существует ли тег ?> где-нибудь в строках кода (следуйте потоку из вашей __конструкции и где вы вызываете материал)
 1
Author: Suneel Kumar, 2015-09-17 08:12:10