1

ユーザーが支払ったかどうかを示すページがあります。彼らが支払いをしていない場合は、大きな赤い画像とX支払いボタンを表示し、支払った場合は大きな緑色のチェックを表示する必要があります。php スクリプトのコードを実行する方法はわかっています。これを呼び出しますpay.phpが、メイン ページの ajax のロジックを解決する必要があります。だから私はこのようなことを考えています:

<div id="payment">
    <div id="image"></div>
    <div id="pay_text></div>
</div>

<script>
$(document).ready(function(e) {
    if(<?php echo $is_logged_in; ?>) {
        $('#payment').load(function() {
            $.ajax({
                data: $this.serialize(), // get the form data
                type: "POST", // GET or POST
                url: "Scripts/pay.php", // the file to call
                complete: function(data) {
                    if(data=="Yes") {
                        $('#image') //do some jquery to make the correct image display here
                        $('#pay_text').text("Yah you paid");
                    } else {
                        $('#image') //do some jquery to make the correct image display here
                        $('#pay_text').text("Sorry you didn't pay");
                    }
                }
            });
        }
    }
});
</script>

したがって、基本的にスクリプトはエコーバックyesまたはno. そして、ユーザーがログインした後にのみ、この負荷を評価したいです (その特定のユーザーが支払ったかどうかを確認する必要があります)。それで、私のロジックは書かれていますか、それとも私は道を外れていますか?

4

1 に答える 1

2

あなたはおそらくloadそのように使うべきではありません、そしてそれは本当に必要ではありません。

$is_logged_inもちろん、PHP変数はtrueajax関数が実行される前にある必要があり、またはを返すtruefalse、通常はコードを返す方法であり、またはを返すのではなく、yesどちらかであるか、ifステートメントに正しく貼り付けることができます。ファズはありません。nodatatruefalse

ajax関数でフォームデータを送信する場合、どのフォームですか?そして、何$thisですか?

ユーザーがサーバーサイドで支払いをしたかどうかを判断する必要があります。これを行うためにクライアントからのデータは実際には必要ありません。必要なのは、データベースまたは使用しているものを確認することだけです。そのユーザーが支払ったかどうかを確認し、trueまたはを返しfalseます。

<script type="text/javascript">
    $(document).ready(function() {
        if(<?php echo $is_logged_in; ?>) {
            $.ajax({
                type: "POST",
                url: "scripts/pay.php"
            }).done(function(data) {
                if (data) {
                    $('#image').css('background', 'url(/yes.png)');
                    $('#pay_text').text("Yah you paid");
                }else{
                    $('#image').css('background', 'url(/no.png)');
                    $('#pay_text').text("Sorry you didn't pay");
                }
            });
        }
    });
</script>​​​​​​​​​
于 2012-10-26T21:45:35.080 に答える