Ajax在Firefox上的行为不同


Ajax behaving differently on Firefox

>我基本上是在尝试检查文件下载的进度。为此,我反复轮询一个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