Почему к нему добавляются переводы строки? - PullRequest
0 голосов
/ 06 сентября 2011

Я звоню saveVideo.php через ajax, и $ result всегда имеет два переноса строки вверху, я не вижу, откуда они могут прийти.Это должна быть просто переменная $ id в addVideo.Мне нужен идентификатор ajax в новом видео, как только оно будет загружено.

Даже с помощью trim () вывод Ajax-вызова saveVideo в инструментах разработчика имеет 2 переноса строки перед ним.

Вот весь соответствующий код:

saveVideo.php:

<?php
require_once '../model.php';

$m = new Model;
$video = new Video;

$user = requireLogin();


$video->file = $_POST['url'];
$video->lib = 0; //sets library to be personal.
$video->title = mysql_escape_string($_POST['video-title']);
$video->desc = mysql_escape_string($_POST['video-description']);
$video->userId = $user->id;

$result = $m->addVideo($video);

echo trim($result);
?>

функция addVideo:

function addVideo($video, $lib = 1) {
        // Adds video to database and associates it with a user id

        $qstring = "mysqlquery";

        $result = mysql_query($qstring);

        $id = mysql_insert_id();

        if (!$result) {
            die("Error adding video to database.");
        }
        return $id;
    }

Ответы [ 2 ]

4 голосов
/ 06 сентября 2011

Ищите ненужные пустые строки перед открытием <?php или после закрытия ?> тегов. Если за пределами блока <?php ?> есть пустые строки, они будут обрабатываться как часть содержимого страницы и отправляться как часть ответа PHP.

Это относится и к ../model.php. Пустые строки там сделают то же самое.


Кроме того, когда вы отлаживаете что-то подобное, вы сэкономите много волос, если используете var_dump вместо echo.

var_dump($result);

Это приведет к выводу типа

string(2) "14"

, который скажет вам, что $result не является источником таинственных разрывов строк.

0 голосов
/ 06 сентября 2011

Вы можете использовать регулярное выражение или даже str_replace для удаления этих разрывов строк.

str_replace(array("\r", "\r\n", "\n"), '', $string);
...