0

サイト全体の HTML を表示していることを除いて、getbalance アクションから返された値を選択しようとしています。この場合は0であるPOSTリクエストの結果のみを表示するにはどうすればよいですか? コードは以下です。

<?php

    $dbc = new PDO('mysql:host=localhost;dbname=testing', 'root', '');
    session_start();

    //Create user if there is no session for the user.

    if(!isset($_SESSION['user_id'])) {
        $random = rand(10000, 100000);
        $create = $dbc->prepare('INSERT INTO users(user_id, balance, time, deposit) VALUES (?, ?, ?, ?)');
        $create->execute(array($random, 0, time(), 0));
        $_SESSION['user_id'] = $random;
    }

    //All actions posted by jQuery (Method & Controller).

    switch($_POST['action']) {
        case 'getbalance':
            $balance = $dbc->prepare('SELECT balance FROM users WHERE user_id = ?');
            $balance->execute(array($_SESSION['user_id']));
            $balance_object = $balance->fetch();
            echo $balance_object['balance'];
        break;
    }

?>

<html>
    <head>
        <title>Testing</title>
        <script src='//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'></script>
        <script type='text/javascript'>
            var update_user_balance = setInterval(function() {
                $.ajax({
                    url: 'index.php',
                    type: 'POST',
                    data: { action: 'getbalance' },
                    success: function(update_user_balance) {
                        $('#balance').html(update_user_balance);
                    }
                });
            }, 1000);

        </script>
    </head>

    <body>
        <div id='welcome'>
            <h2>Welcome to Testing</h2>
        </div>

        <div id='properties'>
            <p>Your balance is <span id='balance'></span></p>
            <p><a id='deposit'>Click here</a> to deposit.</p>
            <p><a id='withdraw'>Click here</a> to withdraw.</p>
        </div>
    </body>
</html>
4

3 に答える 3

0

追加してください

dataType:"text"

あなたのajax呼び出しのパラメータとして。dataType を指定しないと、AJAX は呼び出しで何かが返されることを期待していることを認識できません。dataType は、返される型を参照します。整数 0 は、代わりにテキスト「0」として表すことができます。

うまくいかない場合は、AJAX 呼び出しパラメーターから「成功」キーを削除してみてください。次に、代わりにこれを行います

$.ajax({...parameters...}).done(function(response){...to be done after ajax call...});

アクションもチェックする必要があるかもしれません。代わりに getbalance.php を呼び出して、そこに 0 を返す関数を記述できます。

于 2013-10-09T06:52:42.553 に答える
0

あなたphp codeseparate fileようにbalance.phpに書いてください

そして好きにajax code置き換えindex.phpbalance.php

 $.ajax({
     url: 'balance.php',

それ以外の場合は、 like のdie()後に使用しますecho

switch($_POST['action']) {
    case 'getbalance':
        $balance = $dbc->prepare('SELECT balance FROM users WHERE user_id = ?');
        $balance->execute(array($_SESSION['user_id']));
        $balance_object = $balance->fetch();
        echo $balance_object['balance'];
        die();
    break;
}

またはdie($balance_object['balance']);代わりに使用

echo $balance_object['balance'];die();

于 2013-10-09T06:43:57.263 に答える