【问题标题】:PHP Javascript Uncaught SyntaxError: Unexpected token ILLEGALPHP Javascript Uncaught SyntaxError: Unexpected token ILLEGAL
【发布时间】:2013-06-19 16:03:49
【问题描述】:

我有这个 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 }  

我觉得引号肯定有问题:

" . $failure

有消息,但是 JavaScript 没有把它放在 HTML div 中:

div.aler

我在 Chrome 控制台中收到此错误消息:

Uncaught SyntaxError: Unexpected token ILLEGAL

【问题讨论】:

  • 您必须对引号 \\" 进行双重编码,以便结果包含 JavaScript 字符串的 \"。查看生成的 HTML,你会看到。
  • 尝试在 PHP 中转义任何 ",像这样 \\" 看看会发生什么。或者将它们更改为单引号'。或者甚至可能是\"
  • @FelixKling,它对 div 没有任何影响,所以我无法使用 html 源代码进行检查。但我会尝试使用双重编码我的引号。谢谢
  • @FelixKling 我对 " 进行了双重编码,但没有任何改变

标签: php jquery


【解决方案1】:

php 输出没有转义为 ",因此您必须使用 \\\" 或 \' 而不是 \"。

顺便说一句,json_encode 作为字符串会好得多...

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

【讨论】:

  • @Arash 问题在于您的复制粘贴技能,而不是这段代码。 (我在发布之前进行了测试。)
【解决方案2】:

您忘记了isset 在下面的行中,因为您使用“||”所以它是必需的(或)在您的第一个 if 语句中, 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( "<?php echo ( isset( $success ) ) ? '<p class=\"success\">'.$success.'</p>' : '<p class=\"failure\">'.$failure.'</p>'; ?>");

【讨论】:

  • 是的,也不要忘记转义成功或失败消息引号,使用'addslashes'
  • 是的,这显然取决于错误的服务器设置。 (display_error 等...)投票是因为我收到了未定义的变量错误消息,但在那之后我声明了变量。不知道可以不调试这样的东西......
【解决方案3】:

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

【讨论】:

    【解决方案4】:
    $("div.aler").html("<p class='<?=$success? 'success' : 'failure'?>'><?=$success? $success : $failure?></p>");
    

    当然还有在输出前转义$success$failure

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 2011-12-01
      • 1970-01-01
      相关资源
      最近更新 更多