在mysql更新到数据库后显示更改

时间:2013-01-14 15:53:02

标签: php jquery ajax mysqli live

对于我的个人项目,我正在努力建立一个积分系统。基本上我想要做的是:单击一个按钮(Jquery),然后向数据库发送一个查询,最后向用户显示自动更新的点。我想我可以使用ajax。

$(this).html('Thank you for granting EXP!');
var dataString = 'username=' + username+ '&name='+ name + '&count=' + count + '&message_id=' + message_id;

    $.ajax({
    type: "POST",
    url: "index.php?&page=profile",
    data: dataString,
    success: function() {
        $('#skills').load('./modules/skill_table.php');
    }
    });

此Ajax请求请求正确的页面。在该页面上有一个MySQLi查询,它也可以正常执行。问题是我想在完成查询后重新加载显示点的正确div。当它重新加载div时,我没有看到任何变化。关于我能做什么的任何建议?我是这样的ajax调用的新手。我可以用(数据)响应做一些事情,但这是否意味着我必须为这个请求写一个单独的php文件?

编辑:上面的代码有效。它执行MySQL Query并更新数据库。 .load();功能也工作!当我尝试.load('someotherfile.php');它显示另一个文件。问题是:当我尝试重新加载当前模块时(skill_table.php)它显示旧值而不是更新值。我希望这个解释有点好。

它使用新的数据库值重新加载skill_table.php模块,但它显示旧的数据库。

4 个答案:

答案 0 :(得分:1)

这是一个更完整的示例,介绍如何制作有效的POST请求并在AJAX中捕获响应并一次性返回。这只是众多方法中的一种,请知道这个例子含糊不清。请从中学习并根据您的需要进行塑造。

您的AJAX请求

$.post(
    // This is the URL your posting to
    'index.php?page=profile', 
    // This is the JSONified version of your post data
    {
        "username":username,
        "name":name,
        "count":count,
        "message_id":message_id
    }, 
    // Handling your response here
    function(returnString) {
        // Check to ensure your php code worked
        if(returnString.success === 1) {
            // Insert your new DOM
            $('#skills').html(returnString.response);
        } else {
            // Send error message here
            window.alert('Oh noes! The world is ending!');
            // alertnatively
            //window.alert('Error:' + returnString.response);
        }
    }
);

假设的PHP文件

header("Content-type: application/json");

$mysqli->doMyAwesomeMySQLQueryHere();
$success = ($DidMyQueryWork) ? true : false;

echo json_encode(
        array(
            'success' => $success, 
            'response' => 'Your DOM Here'
        )
);

答案 1 :(得分:1)

.load从缓存中拉出。如果这是一个GET请求,你可以告诉它不要使用缓存,但由于你正在进行POST,你必须在加载的URL的末尾添加一些随机的随机元素。试试这个:

 $.ajax({
    type: "POST",
    url: "index.php?&page=profile",
    data: dataString,
    success: function() {
        $('#skills').load('./modules/skill_table.php?_=' + (new Date()).getTime();
    }
    });

此外,由于您正在使用jQuery,请查看.serialize()以帮助从数组构造dataStrings。

http://api.jquery.com/serialize/

答案 2 :(得分:0)

您需要正确构建数据参数。 IE,让jQuery构建它:

$(this).html('Thank you for granting EXP!');    
    $.ajax({
    type: "POST",
    url: "index.php?&page=profile",
    data: {'username' : username, 'name' : name, 'count' : count, 'message_id' = message_id },
    success: function() {
        $('#skills').load('./modules/skill_table.php');
    }
});

答案 3 :(得分:0)

最好将你的表或html发送到ajax响应中(只发送一个请求):

$.ajax({
  type: "POST",
  url: "index.php?page=profile",
  data: dataString,
  async:false,
  success: function(data) {
      $('#skills').html(data);
  }
}); 

index.php:

include('./modules/skill_table.php');