将ajax数据发布到PHP并返回数据
Posted
技术标签:
【中文标题】将ajax数据发布到PHP并返回数据【英文标题】:post ajax data to PHP and return data 【发布时间】:2011-09-30 18:52:37 【问题描述】:如何将一些 ajax 数据发布到控制器函数并取回?因为我想向函数发布一个整数,并获得另一个整数(发布 ID 的项目的总票数),并且在成功时我想回显该票数。 我不知道如何将“id”发布到控制器功能。请看我的代码:
//post this integet
the_id = $(this).attr('id');
$.ajax(
type: "POST",
data: the_id,
url: "http://localhost/test/index.php/data/count_votes",
success: function()
//the controller function count_votes returns an integer.
//echo that with the fade in here.
);
【问题讨论】:
【参考方案1】: $.ajax(
type: "POST",
data: data:the_id,
url: "http://localhost/test/index.php/data/count_votes",
success: function(data)
//data will contain the vote count echoed by the controller i.e.
"yourVoteCount"
//then append the result where ever you want like
$("span#votes_number").html(data); //data will be containing the vote count which you have echoed from the controller
);
在控制器中
$data = $_POST['data']; //$data will contain the_id
//do some processing
echo "yourVoteCount";
澄清
我觉得你很困惑
data:the_id
与
success:function(data)
data
都不同,为了您自己的清楚,您可以将其修改为
success:function(vote_count)
$(span#someId).html(vote_count);
【讨论】:
您的意思是在将 ID 发布到控制器函数之后,我应该在函数内部回显吗?我想通过$("span#votes_number").html(number);
显示成功的 $data
看到$data
会收到你从客户端发送的ID,基于ID
你可能会做一些处理并计算total votes
然后echo
@ 987654332@,您已经计算并在success
回调中接收它,然后您可以在任何您想要的地方显示voteCount
我会稍微修改一下答案看看
谢谢你。它可以工作,但我只是想知道如果我在控制器中的数字中echo "yourVoteCount";
会起作用,但如果我return yourVoteCount;
不会起作用,在这种情况下我不会获得任何有关成功的数据。什么原因?再次感谢。
echo 将输出打印到要在浏览器中显示的页面,我不确定,但您可以尝试使用 print
而不是 echo ...我自己不太清楚为什么不能使用 return 可能其他人会更好地解释它..【参考方案2】:
对于JS,试试
data: id: the_id
...
success: function(data)
alert('the server returned ' + data;
和
$the_id = intval($_POST['id']);
在 PHP 中
【讨论】:
谢谢,这就是我要找的。我需要将 ID 发布到控制器,控制器将返回另一个整数($vote_count),我需要在成功时发布它。但是,如果我理解正确,您的示例会提醒我发布到控制器的 ID,而不是来自控制器的数据。【参考方案3】:那么 count_votes 是什么样的?是脚本吗?您想从 ajax 调用中返回的任何内容都可以使用简单的 echo 来检索(当然您可以使用 JSON 或 xml,但对于这个简单的示例,您只需要在 count_votes.php 中输出一些内容,例如:
$id = $_POST['id'];
function getVotes($id)
// call your database here
$query = ("SELECT votes FROM poll WHERE ID = $id");
$result = @mysql_query($query);
$row = mysql_fetch_row($result);
return $row->votes;
$votes = getVotes($id);
echo $votes;
这只是伪代码,但应该给你的想法。您从 count_votes 回显的内容将是在您的 ajax 调用中返回到“数据”的内容。
【讨论】:
count_votes 只是从数据库中获取发布的 ID 的(整数)票数。在我的 ajax 函数中,成功时我想得到这个数字,这样我就可以像$("span#votes_number").html(number);
一样回显
因此,使用您的示例,您从“count_votes”脚本输出的值将被解释为“data”javascript 变量,因此 $("span#votes_number").html(data);
谢谢你。我只是想知道如果我在控制器中回显 $votes 为什么它会起作用,但如果我“返回”$votes 就不会起作用?
ajax 响应正在寻找输出给它的某种类型的数据。由于 PHP 在服务器端运行,因此您需要“回显”某种对客户端代码的响应。这是它接收输出的唯一方式。以上是关于将ajax数据发布到PHP并返回数据的主要内容,如果未能解决你的问题,请参考以下文章
发送一个 AJAX 请求以处理数据并返回多个 PHP 响应以更新其进度
PHP Laravel 4.2 ajax post返回null或空