>我基本上是在尝试检查文件下载的进度。为此,我反复轮询一个php文件(progress_sess.php),该文件回显处理下载(导出.php)文件中正在更改的会话值。因此,有一个 ajax 请求要导出.php有多个 ajax 请求要progress_sess.php。这样,我就可以显示文件下载脚本当前所处的阶段。在铬中一切都运行良好。从请求中可以清楚地看出,您可以在此处看到图像: - 铬请求。
然而,在火狐中,这个错误被抛出:-
JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
您可以在此处查看请求: - 火狐请求当我在Firefox中回显xhr.responseText时,它给出了这个:-
""
这可能是因为在 Chromium 中,如图所示,请求是 application/json,如 progress_sess.php 标头中指定的那样,而在 Firefox 中,第一个请求是出于某种莫名其妙的原因 text/plain?!所以我不明白为什么火狐会得到一个文本/纯响应标题。
您可以看到progress_sess.php: -
<?php
session_id($_COOKIE['phpMyAdmin']);
session_start();
header("Content-Type: application/json");
$result = $_SESSION['export_progress'];
if ($result==null)
{
$result = '';
}
$arr = array(progress_result=>$result, source=>'progress_sess.php');
echo json_encode($arr);
?>
所以基本上我的 json 不可能有问题。所以我想我的问题是,当我显式指定标头时,为什么它会抛出 json 解析错误?是因为文本/纯请求标头,还是由于 Firefox 和 Chromium 之间的一些 Ajax 差异。
似乎您的响应不是有效的 json 字符串。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse