PHP Javascript未捕获语法错误:意外标记非法

PHP Javascript未捕获语法错误:意外标记非法,php,jquery,Php,Jquery,我有这个PHP脚本,它不能正常工作。错在哪里 <?php if ( isset($success) || isset($failure) ) { ?> <script> $(document).ready(function(){ $('div.aler').css('display','block'); $("div.aler").html("<?php if($success){echo '<p class=\"suc

我有这个PHP脚本,它不能正常工作。错在哪里

<?php
if ( isset($success) || isset($failure) ) {
?>
<script>
    $(document).ready(function(){
        $('div.aler').css('display','block');
        $("div.aler").html("<?php if($success){echo '<p class=\"success\">'.$success.'</p>';} elseif($failure) {echo '<p class=\"failure\">'.$failure.'</p>';}; ?>");
        setTimeout(function(){
            $("div.aler").fadeOut("slow", function (){
                $("div.aler").remove();
            });
        }, 5000);
    });
</script>
<?php }  
包含消息,但JavaScript不会将其放入HTML div中:

div.aler
我在Chrome控制台中收到以下错误消息:

未捕获的语法错误:意外标记非法


您正试图将其放入div.alert…但在您的代码中编写的“div.aler”缺少一个T…

php输出不会转义为“,因此您必须使用\\\”或\'

顺便说一句,将json_编码为字符串会更好

$("div.aler").html(<?php
    if($success){
        echo json_encode('<p class="success">'.$success.'</p>');
    }
    elseif($failure){
        echo json_encode('<p class="failure">'.$failure.'</p>');
    };?>
);

$(“div.aler”).html(您忘了在下面的行中设置
isset
,这是必需的,因为您在第一个if语句中使用了“| |”(OR), php抛出一个错误,这将破坏您的javascript

$("div.aler").html( "<?php if( $success ){ echo '<p class=\"success\">'.$success.'</p>';}elseif($failure){echo '<p class=\"failure\">'.$failure.'</p>';}; ?>");
$(“div.aler”).html(“”);
将此更改为

$("div.aler").html( "<?php echo ( isset( $success ) ) ? '<p class=\"success\">'.$success.'</p>' : '<p class=\"failure\">'.$failure.'</p>'; ?>");
$(“div.aler”).html(“”);
$(“div.aler”).html(“

”);

当然,在输出之前转义
$success
$failure

您必须对引号进行双重编码,
\\“
,以便结果包含JavaScript字符串的
\”
。查看生成的HTML,您将看到。尝试像这样转义PHP中的任何
\\“
看看这有什么作用。或者将它们改为单引号
。或者甚至是
\”
@FelixKling,它不会将任何内容放入div,因此我无法使用html源代码进行检查。但我将尝试使用双引号编码。Thanks@FelixKling我对
进行了双重编码。“
s但没有任何变化啊,也别忘了转义成功或失败消息的引号,请使用“addslashes”,这显然取决于错误的服务器设置。(显示错误等)投了赞成票,因为我收到了未定义的变量错误消息,但之后我声明了变量。不知道不调试这样的东西是可能的…@Arash问题在于你的复制粘贴技能,而不是这段代码。(我在发布之前测试过。)
$("div.aler").html( "<?php echo ( isset( $success ) ) ? '<p class=\"success\">'.$success.'</p>' : '<p class=\"failure\">'.$failure.'</p>'; ?>");
$("div.aler").html("<p class='<?=$success? 'success' : 'failure'?>'><?=$success? $success : $failure?></p>");