Почему новые строки не работают в этом окне предупреждения javascript? - PullRequest
9 голосов
/ 23 января 2012

Я вижу довольно много разных проблем с окном оповещения и новыми строками. Большинство из них заключается в том, что \n считается новой строкой в ​​PHP, а не отправляется в javascript.

В моем случае строка выводится в новом окне, отображающем \n. Я просто попытался записать \n в окно оповещения через jsfiddle, и это сработало, так что это должен быть мой метод действий ...

Вот строка, возвращаемая в консоль. как видите, \ n определенно есть:

Username is required\nPassword is required\nEmail is required\nPhone is required\nCardnumber is required

Однако, это проявляется так:

An alert with \n instead of a new line

Почему это происходит? Я думаю, что это может иметь какое-то отношение к типу данных, так как он возвращается из $.ajax

if (canAjax && !try_ajax) { 
    e.preventDefault();
    $.ajax({
        type: "POST", 
        url: "mobilesubmit.php",
        data: {"use_ajax": true, "formdata": $("#register_form").first().serializeArray()},
        success: function(data) {

            // This stupid thing should make new lines!
            alert(data);

            console.log(data);
        },
        error: function (request, status, error) {
            try_ajax = true;
            $("#register_form").submit();
        }
    });
}

Ответы [ 4 ]

19 голосов
/ 23 января 2012

Если в журнале консоли отображается \n, а не новая строка, то это означает, что \ экранируется в исходной строке ...

Сравнить

console.log(1,"\\n\\n");
console.log(2,"\n\n");

Решение

используйте .replace() чтобы поменять \n на символы новой строки

console.log(3,"\\n\\n".replace(/\\n/g,"\n"))
3 голосов
/ 23 января 2012

Наиболее вероятной причиной этого является то, что ваш PHP-код выходит за пределы обратной косой черты, добавляя еще одну обратную косую черту перед ним. К тому времени, когда он достигает вашего кода JS, он фактически

"Username is required\\nPassword is required..."

Вы можете просмотреть необработанный ответ на сетевой панели вашего отладчика. Если вы попытаетесь просмотреть его в консоли, он отобразит форматированный вывод вместо необработанного вывода.

Дважды проверьте ваш метод сериализации JSON в коде PHP и убедитесь, что он выполняет то, что вы ожидаете, с помощью \ n.

1 голос
/ 23 января 2012

попробуйте добавить пробел после \ n. Должно сработать

0 голосов
/ 24 мая 2018

Проверка IE11 показывает ту же проблему в скрытом поле, сгенерированном asp.net - его значение отображается в виде значения = "test line 1 \ ntest line 2"

UT на самом деле содержит value="test line 1\\ntest line 2"

Используя element.value.replace(/\\n/g,"\n") на нем, затем отображается правильная строка, разделенная строкой, в javascript alert()

Спасибо, Билли - сэкономленные часы горя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...