Ajax返回完整的html页面

时间:2013-11-14 18:07:52

标签: jquery ajax response

我尝试通过AJAX调用从服务器获取JSON数据。通话工作正常,但是 成功处理程序无法获取服务器生成的正确JSON数据,而是获取当前页面的所有HTML内容。

我的PHP代码($_POST['idFoto']存在):

header('Content-type: application/json');

$fotos = FotoQuery::Create()->findByIdfoto($_POST['idFoto']);
if($fotos->count() != 1){
    die("{success: false, msg: 'Error interno, foto no encontrada unívocamente.'}");
}
$foto = $fotos->getFirst();
$response = Array('success'=>true,'title'=>$foto->getTitulo(),'nombre'=>$foto->getNombre(),
        'desc'=>$foto->getDescripcion(),'date'=>$foto->getFecha());
echo json_encode($response);

我的Ajax电话:

$.ajax({
    url: document.domain +"/private/ajaxRequests/fotoRequestHandler.php",
    method: "POST",
    data: {idFoto: picId},
    success: function(data,status,request) {
       console.log(data);
       console.log(status);
       console.log(request);
    }
});

状态调用是“200 OK”。任何想法为什么这不适当?

UPDATE:当通过URL执行脚本(手动分配了idFoto)时,json_encode正常工作:

  

{ “成功”:真, “标题”:“演示   1“,”nombre“:”01.jpg“,”desc“:”Descripci \ u00f3n foto demo   1 “” 日期 “:” 13" 年7月24日}

但是,我把die(json_encode($response))放在脚本的末尾,Ajax Call继续收回完整的HTML。

注意:我使用Smarty和友好的URL,这会对问题产生影响吗?

2 个答案:

答案 0 :(得分:2)

试试这个。首先清理缓冲区然后打印json。在结束出口!

ob_clean();
echo json_encode($response);
die();

答案 1 :(得分:1)

我发现了问题,通过"/private/ajaxRequests/fotoRequestHandler.php"更改了Ajax的url属性。并且工作正常!。