2013-04-12 33 views
0

脚本:jQuery的回报后整个HTML网页代码

$.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->评论返回1或0的问题是,在响应面板的萤火虫它显示行动的回声值加上整个html页面。因此我无法将response.msg的值设为1或0.这段代码有什么问题。我必须改变,只返回评论行动的价值回声的后jquery?

+0

您提供的代码不足以理解模型为什么返回它的原型,我们还需要您的控制器和模型代码以查看返回数据的方式以及返回的数据 –

+0

HTML页面的代码是写在你的文件或由服务器生成的东西? – p91paul

回答

0

我不知道你的事情是如何工作的,甚至它应该做什么,但是当我使用$ .post(或ajax)时,我通常会做的事情是在帖子中添加了一个额外的参数(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),很容易$。员额()与阿贾克斯当前URL = 1 &运算符= [你的操作符],你总是会得到你需要的json(或者响应仍然可以是html)。例如,在一个操作符中,你可以回显一个完整的模板然后“die()”,这样你就可以得到你希望的网站。)希望这可以帮助,希望我没有错过这一点,一定希望我没有把你所有的东西混淆!

+0

感谢die()实际上解决了问题,或者我们可以在echo之后放置exit() – CodeManiac

+0

个人而言,我使用die&I将它全部写入一行,而不是echo我写了类似于die(json_encode($ array))的东西; – ahmad