【问题标题】:Ajax return full html pageAjax 返回完整的 html 页面
【发布时间】: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 谢谢,我根据你的建议更新了帖子。

标签: jquery ajax response


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      • 2019-03-12
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      相关资源
      最近更新 更多