0

脚本:

$.post("<?php echo base_url(); ?>home/comment?"+$("#MYFORM").serialize(), {

                    }, function(response){

                    if(response.msg == '1')
                    {
                        .....
                    }
                    else
                    {
                                            ....
                    }
            }, "json"
            );

行动:

function comment()
{   
    echo json_encode("msg=".$this->homemodel->comments());          
}

问题: homemodel->comments 返回 1 或 0 问题是在萤火虫的响应面板中,它显示了动作的回声值加上整个 html 页面。因此我不能将 response.msg 的值设为 1 或 0。这段代码有什么问题。我必须更改什么以仅将评论操作上的值回显返回到帖子 jquery?

4

1 回答 1

0

我不确定你的事情是如何工作的,甚至不知道它应该做什么,但是当我使用 $.post(或 ajax)时,我通常会在 post 数据中添加一个额外的参数(ajax=1),以便我当它是一个ajax调用时,可以知道并只做我想要的回声。所以基本上,在服务器端,它可能看起来像这样:

if (isset($_POST['ajax']) && $_POST['ajax']) {
   echo json_encode($anArray);
   die()
}

die() 函数防止页面的其余部分被回显。这非常有用,因为您可以创建一个文件(我们将其称为 inc.ajax.php),该文件包含在任何代码被回显之前(比如说在 index.php 的标题或第一行中),您可以使用它作为控制器。所以你可以添加一个操作符,inc.ajax.php 将成为你的 ajax 控制器。收回之前的例子:

if (isset($_POST['ajax']) && $_POST['ajax']) {
   $operator = $_POST['operator'];
   switch ($operator) {
     case 'upload':
        $obj->upload();
        echo json_encode($obj,true);
     break;
     default:
        echo json_encode($anArray);
     break;
   }
   die()
}

如果 inc.ajax 包含在每个页面中(可能在 index.php 上),则使用 ajax=1&operator=[your operator] 在当前 url 上很容易 $.post() 并且您将始终获得所需的 json (或者响应仍然可以是 html。例如,在一个操作员中,您可以回显整个模板,然后“die()”,这样您就可以得到您想要的网站的一部分。)希望这会有所帮助,希望我没有不要错过重点,当然希望我没有把你和那些东西搞混了!

于 2013-04-12T13:54:16.650 回答