5

DBにコメントを送信するためにajaxリクエストを使用しています。成功した応答は、

1. OK

実際の問題は、php スクリプトからの応答が

1. 
2. OK

そのため、スクリプトをデバッグしたところ、スクリプトが次の行を実行するときに改行文字 si が追加されていることがわかりました。

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

いくつかの検索の後、BOM (Byte Order Mark) の問題である可能性があることを読みました。それで、ファイルをダウンロードして16進エディタで開いたところ、classQuote.phpBOMがないことに気づきました...誰か助けてもらえますか?

PS プロジェクト内のすべてのファイルは UTF-8 でエンコードされており、現在、ファイルに BOM を追加しない 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;
4

4 に答える 4

12
  1. <?phpclassQuote.phpのオープニングの前に何もないことを確認してください
  2. 閉じた後に末尾の文字/行がないことを確認してください?>
  3. タグがコード行のどこかに存在するかどうかを確認し?>ます (__construct からのフローと、何かを呼び出す場所に従ってください)

実際、終了タグを省略すると役立つ場合があります。別の可能性は次のとおりです。

  // 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()); 
            }
于 2012-07-21T15:21:10.440 に答える
2

jQueryを使用している場合

AJAX 成功コールバックで jQuery.trim(responseData) を使用して、空白を取り除くことができます

こちらもご覧 ください http://api.jquery.com/jQuery.trim/

それが役に立てば幸い

于 2012-07-22T09:00:49.403 に答える
1

これらで修正しました

  1. 開口部の前に何もないことを確認してください
  2. 閉じた後に末尾の文字/行がないことを確認してください ?>
  3. ?> タグがコード行のどこかに存在するかどうかを確認します (__construct からのフローと、何かを呼び出す場所に従ってください)
于 2015-09-17T08:12:10.253 に答える