阿贾克斯后返回值
问题描述:
即时通讯使用Ajax值发送到一个PHP脚本写一些值到数据库:阿贾克斯后返回值
$.ajax({
type: "POST",
data: "action=vote_down&id="+$(this).attr("id"),
url: "vote.php",
success: function(msg) {
$("span#votes_count"+the_id).fadeOut();
$("span#votes_count"+the_id).html(msg);
$("span#votes_count"+the_id).fadeIn();
}
});
正如你可能会从action=vote_down
告诉脚本是一个投票脚本。
我已经阻止用户投票不止一次,通过登录投票反对那里的用户名和ID在vote.php
,如果有用户名和ID已经在数据库对同一篇文章,然后我不添加投票数据库。
我个人认为查询每个页面加载的数据库以检查用户是否已经投了票可能相当密集,有很多地方可以在单个页面上进行投票。
所以相反,我会向用户显示投票选项,但是当他们投票时,我想要一些如何从vote.php
返回一个值,说他们已经投了票。
有关最佳方法的任何想法?
答
这应该让你在正确的方向...
http://forum.jquery.com/topic/jquery-ajax-and-php-variables
如果他们已经贴出我会解析回一个布尔值false,或表决,如果他们是成功的标识(造型/添加html消息)。
答
使用JSON
如果这是你的文件显示表决方式:
<div id='voteform-div'>
<form id='voteform'>
Your form elements and a submit button here.
</form>
</div>
你的JS代码如下所示:
jQuery('#voteform').live('submit',function(event) {
$.ajax({
url: 'vote.php',
type: 'POST',
data: "action=vote_down&id="+$(this).attr("id"),
dataType: 'json',
success: function(messages) {
for(var id in messages) {
jQuery('#' + id).html(messages[id]);
}
}
});
return false;
});
您vote.php应像这样:
// Get data from $_POST array.
if(Already voted) {
// It will replace the id='voteform-div' DIV with error message
$arr = array ("voteform-div" => "you have already voted.");
} else {
// Store vote in database
// It will replace the id='voteform-div' DIV with confirmation message
$arr = array ("voteform-div" => "Yor vote is submitted. Thanks");
}
echo json_encode($arr); // encode array to json format
有关这方面的更多细节this question。