php - 当 GoDaddy 主机上的 JSON 内容超过 1MB 时,ajax GET 失败

标签 php json ajax get

我在 jquery 中有一个非常简单的 ajax GET 请求,它在我的本地测试服务器上运行得很好。如果我将网页与 php 服务一起移动到托管服务器 (GoDaddy),则会失败,并显示 textStatus = "error"errorThrown = ""。 Chrome 显示

net::ERR_EMPTY_RESPONSE.

这一切都在 1 秒内发生,因此不是超时问题。

如果我截断记录数,使返回的 json 小于 1MB,则可以正常工作。

如果我从 GoDaddy 网页调用服务器代码到我的本地服务器以获取所有记录 (1.8MB),一切都很好。任一站点的良好返回都将在不到一秒的时间内完成。

当 json echo 中的数据超过 1MB 时,是什么导致 GoDaddy 基本上不返回任何数据?

PHP 服务器例程:

if (isset($_REQUEST['_SESSION'])) die("Get lost Dweeb!");
error_reporting(E_ALL | E_STRICT);
header('Access-Control-Allow-Origin: *');
$date_code = $_GET['date_code'];
$region = $_GET['region'];
$chargers = array();
$chg_count = 0;
$ftime = filemtime("chargers.json");

if ($ftime != $date_code) {
    $aTeslaChargers = json_decode(file_get_contents("chargers.json"),true);
    foreach($aTeslaChargers as $aTeslaCharger) {
        if ($aTeslaCharger['region'] == $region) {
            $chargers[] = $aTeslaCharger;
            $chg_count++;
            //if ($chg_count > 1972) break;
        }
    }
}
$json = json_encode(array(array("date_code" => $ftime), $chargers));
echo $json;

JavaScript 例程:

var url = 'https://www.website.com/get_data.php?date_code=0&region=north_america'; 

    var jqxhr = $.ajax({
                url: url,
                type: "GET",
                crossDomain: true
    })
    .done(function(response) {
        console.log(new Date());
        //var data = $.parseJSON(response);
        //console.log(data);
        console.log(response.length);
    })
    .fail(function(jqXHR, textStatus, errorThrown) {
        console.log(new Date());
        console.log(errorThrown);
    });

最佳答案

好吧,我偶然发现了一个解决方案。就是在echo之前添加一个header语句,似乎可以让echo大于1MB。

header("Content-Type: application/json");
echo json_encode(array(array("date_code" => $ftime), $chargers));

我现在需要更多地了解这一点并在各种浏览器中检查它。同样有趣的是,数据现在作为对象返回,因此无需对其进行 json 解码。

我怀疑 GoDaddy 服务中存在默认长度的内容,但我不确定。我的服务器再次没有这样做。

关于php - 当 GoDaddy 主机上的 JSON 内容超过 1MB 时,ajax GET 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52572923/

相关文章:

php - 连接表错误未定义属性

php - 附加参数形式

php - 如何将完整的安全角色列表/层次结构传递给 Symfony2 中的 FormType 类?

javascript - 我想从 JSON 数据数组中获取一个特定条目并进行一些修改

PHP MySQL - 多次循环获取数组

ajax - Rails 渲染 JSON - session 丢失?

javascript - 查询结果到json laravel 5

java - 适用于 Android 的 Fitbit,每次启动应用程序时自动获取用户数据,无需 OAuth

jquery - Magento 2 token 身份验证 - 400 错误/CORS 问题

javascript - AJAX 请求后从 Flask 返回错误消息并在 JavaScript 上处理它?