【问题标题】:post ajax data to PHP and return data将ajax数据发布到PHP并返回数据
【发布时间】: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.

                }
            });

【问题讨论】:

    标签: php jquery codeigniter post


    【解决方案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 在服务器端运行,因此您需要“回显”某种对客户端代码的响应。这是它接收输出的唯一方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多