【发布时间】:2013-11-14 18:07:52
【问题描述】:
我正在尝试通过 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”。任何想法为什么这不能正常工作?
更新:当通过 URL(手动分配 idFoto)执行脚本时,json_encode 工作正常:
{"成功":true,"title":"演示 1","nombre":"01.jpg","desc":"Descriptci\u00f3n 照片演示 1.","日期":"07/24/13"}
但是,我将die(json_encode($response)) 放在脚本末尾,Ajax 调用会继续接收完整的 HTML。
注意:我使用 Smarty 和友好的 URL,这对问题有影响吗?。
【问题讨论】:
-
在ajax调用中添加数据类型:dataType (xml or json or script or html)
-
@Ani 感谢您的回复,我忘了在线程中写这个。当我输入
dataType: 'json'时,console.log 没有执行并且响应仍然是 html(请查看 Chrome 开发工具)。 -
试试
die(json_encode($response)); -
@dfsq 谢谢,我根据你的建议更新了帖子。