8

我正在尝试通过 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({
    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”。任何想法为什么这不能正常工作?

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

{"success":true,"title":"Demo 1","nombre":"01.jpg","desc":"Descripci\u00f3n foto demo 1.","date":"07/24/13 "}

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

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

4

2 回答 2

3

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

于 2013-11-14T18:40:53.433 回答
2

尝试这个。首先清理缓冲区,然后打印 json。最后出口!

ob_clean();
echo json_encode($response);
die();
于 2017-06-11T10:02:26.710 回答