【问题标题】:Sending a JSON string to HTML that is too large将 JSON 字符串发送到太大的 HTML
【发布时间】:2021-08-01 12:24:15
【问题描述】:

我正在使用 Codeigniter4,我生成了一个相当长的 JSON,以便我可以用它制作地图点。但是,当我使用

传递字符串时
echo view('pages/' . $page, $data);

并试图用

解压html端的字符串
var geojson = JSON.parse('<?php echo $geoJSON; ?>')

我收到语法错误,因为未发送整个 json 字符串。我已经用少量数据测试了我的设置,所以我确定问题出在字符串的长度上。

有没有办法发送大字符串?如果没有,有没有更好的方法?我听说过一种叫做 AJAX 的东西,但是 MapBoxGL 需要一个带有特定键的 json 对象,所以这就是为什么我要从我的 php 端传递一个完整的 json。

【问题讨论】:

  • 我猜你的 JSON 有什么特殊字符,所以这个字符串被截断了。

标签: javascript php html json string


【解决方案1】:

如果您想在页面加载后加载该数据,以免阻塞您的 UI,您可以使用这个通用 ajax 函数。不需要图书馆

function fetchJSONFile(path, callback) {
    var httpRequest = new XMLHttpRequest();
    httpRequest.onreadystatechange = function() {
        if (httpRequest.readyState === 4) {
            if (httpRequest.status === 200) {
                var data = JSON.parse(httpRequest.responseText);
                if (callback) callback(data);
            }
        }
    };
    httpRequest.open('GET', path);
    httpRequest.send(); 
}

// this requests the file and executes a callback with the parsed result once
//   it is available
fetchJSONFile('pathToFile.json', function(data){
    // do something with your data
    console.log(data);
});

来自https://stackoverflow.com/a/14388512/1772933

【讨论】:

  • 这是否意味着我必须先将 json 保存到文件中?
  • 不,这只是一个例子。你可以让它像fetchJSONFile('pathToFile.php' 这样的东西,并让php脚本使用你的ajax将得到的json_stringify($json) 回显JSON数据
【解决方案2】:

您需要提供有关如何使用 PHP 在服务器上构建 JSON 的信息。如果您的字符串格式正确,您可以简单地使用 json_encode 来获取您的数组并为您完成这项工作。您可以使用开发者控制台查看相应 ajax 调用的网络响应,以检查响应状态或响应字符串。

【讨论】:

  • 字符串 100% 正确构建。用一小组数据进行测试,大约 15 个点左右,效果很好。问题是当我发送大约 200 个点时,发送过来的字符串由于某种原因被切断了。我目前没有使用 Ajax,所以不幸的是我不知道这意味着什么
猜你喜欢
  • 2012-11-05
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 2011-07-02
  • 1970-01-01
  • 2012-07-22
相关资源
最近更新 更多