2013-11-14 99 views
4

即时通讯尝试通过AJAX调用从服务器获取JSON数据。该调用工作正常,但 成功处理程序不会获取服务器生成的正确JSON数据,而是获取当前页面的所有HTML内容。Ajax返回完整的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”,”农布雷 “:” 01.JPG”, “说明”: “Descripci \ u00f3n照片演示 1”, “日期”: “13年7月24日”}

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

注:即时通讯使用Smarty和友好的URLS,这会对问题产生影响吗?

+2

添加数据类型在Ajax调用:数据类型(XML或JSON或脚本或HTML) – Ani

+0

@Ani感谢答复,即时通讯忘记线程写这篇文章。当我把'dataType:'json'' console.log不执行,响应仍然是html(请查看Chrome开发工具)。 – ramiromd

+0

尝试'死(json_encode($回应));' – dfsq

回答

1

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

1

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

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