【问题标题】:PHP appends 0 at the end in mobile browsers [closed]PHP在移动浏览器的末尾附加0 [关闭]
【发布时间】:2014-09-18 20:58:27
【问题描述】:

我的网站本周突然停止工作。我注意到,当从手机调用时,我发送到服务器的 ajax 调用会在数据末尾返回一个额外的“0”字符。 ie. {1:1, 2:2}0

这不会发生在桌面浏览器中。当我尝试直接从浏览器访问 .php 时,我可以看到末尾附加了“0”。同样,在桌面浏览器中,没有“0”。在不同的手机浏览器中,总是有一个“0”。这搞砸了我的 ajax 调用,因为我期待一个 json 返回值,但 '0' 字符是意外的。

我尝试在我的 php 处理程序末尾添加 die();exit;,但没有任何区别。有谁知道还有什么可能的问题?

更新: 我没有使用任何 php 框架。

我已将代码简化为基本上就是这样,最后仍然得到附加的 0。

get_data.php

<?php
echo "ASD";
die();
?>

然后,我通过网络服务器http://domain.com/get_data.php 访问它,我在页面中看到了 ASD0。我已经直接访问它以消除它是 ajax 调用/jquery 问题的可能性。我还没有尝试在我的本地机器上托管一个基本的 xampp 服务器,看看是否会发生同样的问题。目前,它托管在我们位于 register.com 的网络服务器中。

【问题讨论】:

  • 我们需要查看一些代码...
  • PHP 本身无法检测到使用过的浏览器并基于此执行其他操作。除非你告诉它这样做。
  • 您是否使用一些库或引导程序?前段时间我也遇到过类似的问题,是基于bootstraps自己的js
  • 正如其他人所说,它必须是您的代码中与此相呼应的东西。你有检测手机的东西吗?通过 echo 或 var_dump 做一个 grep,也许你留下了一些调试代码。
  • @MarcusRommel OP 说附加到 ajax 调用,我不认为引导程序可以在 js 本身处理后更改服务器响应

标签: php ajax json


【解决方案1】:

找到了罪魁祸首,但不确定原因。仅在使用 ATT 数据连接时发生。它在使用 WiFi 和其他网络服务提供商时工作正常。

PHP script has extra 0 at the end of the output on a cellular connection一样的问题

添加以下行解决了问题

header('Content-Type: text/plain; charset=utf-8');

【讨论】:

  • 我在使用最新的 PHP 和 Apache 的 AT&T 移动设备上遇到了同样的问题,可以确认这解决了它。
猜你喜欢
  • 2021-07-27
  • 2013-04-16
  • 2013-08-17
  • 2016-08-22
  • 2012-06-01
  • 2020-11-06
  • 1970-01-01
  • 2011-03-11
  • 2017-09-17
相关资源
最近更新 更多