2017-04-25 17 views
0

我希望我的header因此可以用我的database中的新值更新。PHP/MySQL/AJAX - 使用AJAX刷新查詢值

爲了實現它,我已經創建了一個AJAX交方法:

AJAX(編輯):

$(document).ready(function() { 
    function update() { 
    $.ajax({ 
    type: "POST", 
    url: "indextopgame.php", 
    data: { id: "<?=$_SESSION['user']['id']?>"}, 
    success: function(data) { 
     $(".full-wrapper").html(data); 
    } 
}); 
     } 

    setInterval(update, 5000); 
}); 

它應該通過$_SESSION['user']['id']indextopgame.php每10秒。

indextopgame.php看起來像這樣:

PHP PART(編輯):

<?php 

session_start(); 

$con = new mysqli("localhost","d0man94_eworld","own3d123","d0man94_eworld"); 

function sql_safe($s) 
{ 
    if (get_magic_quotes_gpc()) 
     $s = stripslashes($s); 
    global $con; 
    return mysqli_real_escape_string($con, $s); 
} 

if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    $id = trim(sql_safe($_POST['id'])); 

    $data = "SELECT username, email, user_role, fbid, googleid, fname, lname, avatar, energy, energymax, health, healthmax, fame, edollar, etoken, companies, workid, city, function FROM members WHERE id = $id"; 
    $result = mysqli_query($con, $data); 

    if (mysqli_num_rows($result) > 0) { 
     while($row = mysqli_fetch_assoc($result)) { 

      $_SESSION['user']['user_role'] = $row["id"]; 
      $_SESSION['user']['fbid'] = $row['fbid']; 
      $_SESSION['user']['googleid'] = $row['googleid']; 
      $_SESSION['user']['created'] = $row['created']; 
      $_SESSION['user']['lastlogin'] = $row['lastlogin']; 
      $_SESSION['user']['username'] = $row['username']; 
      $_SESSION['user']['fname'] = $row['fname']; 
      $_SESSION['user']['lname'] = $row['lname']; 
      $_SESSION['user']['email'] = $row['email']; 
      $_SESSION['user']['avatar'] = $row['avatar']; 
      $_SESSION['user']['energy'] = $row['energy']; 
      $_SESSION['user']['energymax'] = $row['energymax']; 
      $_SESSION['user']['health'] = $row['health']; 
      $_SESSION['user']['healthmax'] = $row['healthmax']; 
      $_SESSION['user']['fame'] = $row['fame']; 
      $_SESSION['user']['edollar'] = $row['edollar']; 
      $_SESSION['user']['etoken'] = $row['etoken']; 
      $_SESSION['user']['companies'] = $row['companies']; 
      $_SESSION['user']['workid'] = $row['workid']; 
      $_SESSION['user']['city'] = $row['city']; 
      $_SESSION['user']['function'] = $row['function']; 
     } 

      echo $_SESSION['user']['energy']; 
    } 
} 
?> 

不過這不會更新我希望值的頭,而不是它只是使頭消失。這段代碼有什麼問題?也許還有其他更有效的方法來刷新MySQL的值?

編輯:

我已經編輯了AJAX/PHP代碼樣本 - 它的工作這樣!但是,我如何迴應所有這些變數?一個接一個的回聲似乎再次導致錯誤,因爲值會從我的標題中消失。

EDIT2:

解決了,我犯了一個愚蠢的錯誤語法...謝謝大家的貢獻!

+0

如果您在成功轉儲數據變量..你有正確的數據嗎? – VikingCode

+0

@Akin實際上會讓我的標題消失rofl –

+1

爲什麼你來回發送會話變量?它已經在服務器上,所以沒有理由將其發送到客戶端並返回到服務器。 – jeroen

回答

1

您沒有使用在你的Ajax調用發送回從服務器的數據:

success: function() { 
     $(".full-wrapper").html(data); 
    } 
}); 

應該是:

success: function(data) { 
        ^^^^ the returned data 
     $(".full-wrapper").html(data); 
    } 
}); 

您也應該檢查你的PHP腳本實際上呼應了有用的東西。

+1

偉大的,我正在做這個工作的一半,現在只是PHP數據不是顯示意義,我需要在PHP部分工作。謝謝jeroen! –

1

data選項中缺少成功的方法

success: function(data) {      
    $(".full-wrapper").html(data); 
} 

,你也應該有迴音在PHP文件,該文件要在標題即可顯示該內容。