当前位置: 首页 > 面试题库 >

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

印子平
2023-03-14
问题内容

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

净:: ERR_EMPTY_RESPONSE。

这一切都在1秒钟之内发生,所以这不是超时问题。

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

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

当json回显中包含超过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);
    });

问题答案:

好吧,我偶然发现了一个解决方案。它是在回显之前添加一个头声明,这似乎允许回显大于1MB。

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

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

我怀疑GoDaddy服务中有某些内容默认了长度,但是我不确定。同样,我的服务器没有这种行为。



 类似资料:
  • 我有一种情况,其中两个WebServer是用nginx作为loadbalancer设置的,它们本身是后端。发行版是Debian Wheezy。两台服务器上的配置相同(四核32GB RAM) TCP协议

  • 和我的CSS:

  • 我一直在论坛和网上寻找关于如何使用plesk将Laravel 5部署到godaddy windows主机服务器上的指南,但我找不到太多信息。我希望这里有人能帮我。以下是我所做的: > 首先,我下载了一个新的laravel安装并将其解压缩到根目录。 然后,我将整个公共文件夹从laravel文件夹(最近从提取中创建)移动到http pdocs文件夹。 之后,我编辑了位于公共文件夹中的index.php

  • 我有一个docker应用程序,我使用以下docker compose。yml运行它: 我有一个没有docker化的服务器在我的机器上运行,我可以通过访问它。我希望我的服务能够访问它。 我发现有人建议在我的服务配置中添加以下内容: 但是当我添加这个时,并尝试,我得到。当我尝试<code>curl时,也会出现同样的错误http://host.docker.internal:3000。 我拼命地尝试将端

  • 问题内容: 我想将目录从docker容器挂载到本地文件系统。该目录是网站根目录,我需要能够使用任何编辑器在本地计算机上对其进行编辑。 我知道我可以运行,但是这样做只能在容器内创建一个空目录。 如何在Linux主机上的Docker容器内挂载目录? 问题答案: 如果您的目标是提供现成的LAMP,则应在Dockerfile中使用VOLUMES声明。 问题是docker不会挂载文件,因为它们已经在创建卷的

  • 问题内容: 我正在使用Go中的json结构输入流。我从标准输入上的另一个应用程序接收输入流,并且无法更改通信协议。 我的问题是每个json结构都以非json字符串行终止:“ end”(不带引号)。 我正在使用Golang编码器/ json包来解码从stdin接收到的json。问题在于,第二次我使用msg调用解码器时,解码器会产生错误:“无效字符’e’正在寻找值的开头”。 问题当然是,“ end”字