jquery在POST后用返回的mysql数据更新html


jquery update html with returned mysql data after POST

我正在开发一个jquery.php投票系统。一旦用户单击投票按钮,就会弹出一个jquery模式,他们必须单击"确认"来确认他们的投票。这将发送一个ajax请求来更新数据库,而不是什么。单击确认后,模态将关闭。我希望能够在页面上动态更新投票数。我可以很容易地从mySQL表中获取这些数据。我的问题是,如何将其发送回来,以便动态更新html页面?

目前,该页面什么都不做,所以对用户来说,它看起来不像是他们投票了。理想情况下,我想更新总票数,并注入一张显示他们投票结果的图像。

function vote(el, id) {
    $.ajax({
        type: 'POST',
        url: '/path/morepath/',
        dataType: 'json',
        data: {
            'action': 'castVote',
            'vote': id
        },
        success: function (data) {}
    });
    $.modal.close();
}

在服务器端,用一个JSON对象响应POST请求,该对象包含投票数,可能还有图像路径。

然后在AJAX回调中,数据将是该对象。然后,您可以使用jQuery在DOM中选择一个元素,并对其调用.text().html()来更新内容。

如果您从PHP返回格式不正确的数据,您可以通过赋予它一些结构,然后使其成为json来提高javascript的易用性:

$sqlResult = ...;
$responseArray = array();
$responseArray['result'] = true; //or false if it failed
$responseArray['data'] = $sqlResult;
print json_encode($responseArray);

在您真正期望页面对ajax响应做出正确响应之前,您必须确保正确解析了响应数据。

在你的成功功能中,试着控制台。记录你的响应,看看它是什么样子的

console.log(data);

如果您可以在返回数据中引用可靠的内容,请检查它:

success: function(data) {
  if(data.result == 'true') {
    $('someElement.someClass').someFunction();
  }
}

您可以使用一些不同的选项更改投票号码的值或html内容,例如:

...
        success: function(data)
        {
            var $newTotal = ...//get total from data
            $('voteCountContainer').html($newTotal); // or you can also use .val() if it's an input
        }    
...

希望有所帮助,

Dan