2013-10-09 103 views
0

我試圖從getbalance操作中選擇返回的值,除了它顯示整個網站的HTML。我怎麼能只顯示在這種情況下是0的POST請求的結果?代碼如下。jQuery .html()只選擇特定內容?

<?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> 

回答

0

撰寫您php codeseparate filebalance.php

而且在ajax code取代index.phpbalance.php

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

否則使用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();

+0

有沒有其他的方式做到這一點,而不必做出單獨的文件..? –

+0

它更好地爲'ajax'製作'獨立文件',否則你可以'在相同頁面中'回顯你的數據'後使用die''看到我的'更新的答案' –

+0

完美,謝謝。 –

0

該代碼後添加出口();內部開關 - 案例:爲getBalance

echo $balance_object['balance']; 
exit(); 
0

請加

dataType:"text" 

爲您的Ajax調用的參數。 沒有指定dataType,AJAX將不知道該調用需要返回某些東西。 dataType引用返回的類型。整數0可以表示爲文本「0」。

如果不起作用,您可以嘗試從AJAX調用參數中刪除「成功」鍵。 然後,請執行此操作

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

您可能還需要檢查操作。你可以調用一個getbalance.php來編寫返回0的函數。