4

この 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

4

4 に答える 4

6

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>');
    };?>
);
于 2013-06-22T17:53:23.557 に答える
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>'; ?>");
于 2013-06-22T17:55:29.930 に答える
1

あなたはそれをdiv.alertに入れようとしています...しかし、あなたのコードでは「div.aler」を書きましたが、Tがありません...

于 2013-06-22T17:51:54.137 に答える
0
$("div.aler").html("<p class='<?=$success? 'success' : 'failure'?>'><?=$success? $success : $failure?></p>");

そしてもちろん、出力前にエスケープ$success$failureます。

于 2013-06-22T17:55:57.833 に答える