将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并返回数据的主要内容,如果未能解决你的问题,请参考以下文章

Jquery,ajax 发布并获得结果?

发送一个 AJAX 请求以处理数据并返回多个 PHP 响应以更新其进度

PHP Laravel 4.2 ajax post返回null或空

ajax返回数据过程详解

codeigniter php 和 jquery - 如何从多个表中获取数据并通过 ajax 返回

将数据从 WebMethod 返回到 ajax