我尝试通过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,这会对问题产生影响吗?
答案 0 :(得分:2)
试试这个。首先清理缓冲区然后打印json。在结束出口!
ob_clean();
echo json_encode($response);
die();
答案 1 :(得分:1)
我发现了问题,通过"/private/ajaxRequests/fotoRequestHandler.php"
更改了Ajax的url属性。并且工作正常!。