Мне нужно добавить перерыв в JavaScript с помощью следующей ситуации.

<?php
$str_alert = "";
if(isset($case1)){
    $str_alert .= "have case1 \n";
}
if(isset($case2)){
    $str_alert .= "have case2 \n";
}
if(isset($case3)){
    $str_alert .= "have case3 \n";
}
if(!empty($str_alert)){
?>
<script type="text/javascript" >
$(document).ready(function(){
     alert("<?=$str_alert?>");
});
</script>

Это нарушает код JavaScript и показывает ошибку

SyntaxError: неопределенный строковый литерал

Пожалуйста, дайте мне какое-нибудь решение

1
Sathish Kumar D 31 Авг 2017 в 09:57

3 ответа

Лучший ответ

Добавьте \ для выхода \n в php. Попробуйте следующий код

<?php
$str_alert = "";
if(isset($case1)){
    $str_alert .= "have case1 \\n";
}
if(isset($case2)){
    $str_alert .= "have case2 \\n";
}
if(isset($case3)){
    $str_alert .= "have case3 \\n";
}
if(!empty($str_alert)){
?>
<script type="text/javascript" >
$(document).ready(function(){
     alert("<?=$str_alert?>");
});
</script>
1
B. Desai 31 Авг 2017 в 07:00

Строки Javascript не могут разбивать символы новой строки без escape (). Смотрите этот вопрос для подробных ответов:

Как разбить строку на несколько строк кода в JavaScript?

0
l.g.karolos 31 Авг 2017 в 06:59

Вы должны представлять символы, которые не допускаются как литералы в строках JS (например, новые строки) с помощью escape-символов.

Поскольку JSON - это формат данных, основанный на предмете буквального синтаксиса JavaScript, вы можете использовать функцию PHP json_encode для преобразования любого базового типа данных (строки, числа, массива, ассоциативного массива) в код JavaScript со всеми правильными управляющими символами ,

По умолчанию он даже экранирует /, поэтому вы можете безопасно вывести строку </script>.

alert(<?=json_encode($str_alert);?>);

Так как " будет включен в JSON, вам не следует добавлять их вручную.

1
Quentin 5 Окт 2017 в 10:07