2017-06-03 131 views
2

我的Ajax成功更新了数据库中的一些信息,因此他应该更新一个显示此信息的元素。但事实并非如此。但是,刷新页面后,导致重新连接到数据库,信息更新。下面是函数:从数据库刷新数据,无需刷新页面

function topUpTheBalance(){ 
     var d = document.getElementById("numberForm").value; 
     $.ajax({ 
     type: 'POST', 
     url: 'handler.php', 
     data: { 
      'topUpBalance':d, 
     }, 
     success: function() { 
      var k = document.getElementById("balanceNumber"); 
      k.innerHTML ="Your balance: "+ <?php echo $userRow['userBalance']; ?>; 
     } 
     } 
     ); 
    } 

和handler.php

<?php 
    ob_start(); 
    session_start(); 
    require_once 'dbconnect.php'; 

    if(!isset($_SESSION['user'])) { 
    header("Location: index.php"); 
    exit; 
    } 
    $res=mysqli_query($link, "SELECT * FROM users WHERE userId=".$_SESSION['user']); 
    $userRow=mysqli_fetch_array($res); 
    //$link = mysqli_connect("localhost","username","password", "users"); 
    $bal = $userRow['userBalance']+$_POST['topUpBalance']; 
    if($stmt = mysqli_prepare($link, "UPDATE users SET userBalance = ? WHERE userId = ?")){ 
      mysqli_stmt_bind_param($stmt, "di", $bal, $userRow['userId']); 
      mysqli_stmt_execute($stmt); 
      mysqli_stmt_bind_result($stmt, $result); 
      mysqli_stmt_fetch($stmt); 
      mysqli_stmt_close($stmt); 
    } 
    mysqli_close($link); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
</body> 
</html> 
<?php ob_end_flush(); ?> 

任何人都可以建议我如何更新而无需刷新页面的信息?

+0

呼叫在哪里? balanceNumber – mplungjan

+0

它从html中的按钮调用。 HTML文件非常大,所以我不想在这里添加它。但正如我所说,阿贾克斯使他的工作,但他不能刷新数据,因为它没有在页面上更新 –

+0

我看不到你的代码中的按钮。 – mplungjan

回答

0

问题在于,当您写k.innerHTML =“string”+ php代码 时,您正试图在客户端运行php。您应该在请求的php文件中生成输出并检索该输出并把它放在这里。

https://www.w3schools.com/jquery/jquery_ajax_get_post.asp 该链接解释了如何通过POST将数据发送到服务器,并通过GET从服务器获取数据。

0

没有详细的信息来帮助你,但我注意到的第一件事是你的AJAX调用,以获得您需要通过GET类型称之为数据:

$.ajax({ 
    'url': 'getdata.php', 
    'type': 'GET', 
    'dataType': 'json', 
    'data': {'topUpBalance':d}, 
    'success': function(data) { 
     // if the request calls properly 
    }, 
    'error': function(data) { 
     // if the request fails. 
    } 
}); 
0

主要的是,你应该抛出输出从PHP的一面,但你有没有送输出,你应该使用isset($ _ POST [“topUpBalance”]),然后去其他过程,例如: -

if(isset($_POST['topUpBalance'])){ 
    $res=mysqli_query($link, "SELECT * FROM users WHERE 
    userId=".$_SESSION['user']); 
    $userRow=mysqli_fetch_array($res); 
    $bal = $userRow['userBalance'] + $_POST['topUpBalance']; 

    if($stmt = mysqli_prepare($link, "UPDATE users SET userBalance = ? 
    WHERE userId = ?")){ 
     mysqli_stmt_bind_param($stmt, "di", $bal, $userRow['userId']); 
     mysqli_stmt_execute($stmt); 
     mysqli_stmt_bind_result($stmt, $result); 
     //Send output echo ...... ; 
     mysqli_stmt_fetch($stmt); 
     mysqli_stmt_close($stmt); 
     } 
     mysqli_close($link); 
} 

jQuery的一面: - 接收使用参数数据

function topUpTheBalance(){ 
    var d = document.getElementById("numberForm").value; 
    $.ajax({ 
    type: 'POST', 
    url: 'handler.php', 
    data: { 
     'topUpBalance':d, 
    }, 
    success: function (data) { 
    // use sent data or unsent data for processing 
    } 
    } 
    ); 
}