脚本:
$.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-&gt;注释返回1或0问题是在firebug的响应面板中它显示了动作的回显值加上整个html页面。因此我无法将response.msg的值视为1或0.此代码有什么问题。我必须改变什么才能将评论操作中的值echo仅返回到post jquery?
答案 0 :(得分: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上),那么当前网址上的$ .post()很容易被ajax = 1&amp; operator = [你的运算符]并且你将永远得到你需要的json(或者响应可能仍然是html。在一个操作符中,你可以回显整个模板然后“die()”,这样你就可以得到你想要的网站的一部分。)希望这个帮助,希望我没有错过这一点,当然希望我没有把你与所有这些东西混淆!