【问题标题】:Why do I get error when trying to parse this json object?为什么在尝试解析此 json 对象时出现错误?
【发布时间】:2021-05-01 02:48:28
【问题描述】:

我有以下 PHP (Codeigniter Frameword) 代码:

$webpages = $this->webpageModel->select('webpageID,webpageTitle')->where('webpagecategoryID', $webpagecategoryID)->findAll();
header('Content-Type: application/json');
echo json_encode(array("response" => $webpages))

在控制台中,显示如下:

{"response":[{"webpageID":"3","webpageTitle":"\u03a7\u03b1\u03b9\u03c1\u03b5\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03c1\u03cc\u03b5\u03b4\u03c1\u03bf"}]}

这是我的 JavaScript:

$(document).ready(function() {
        let category = $('#webpagecategoryID');
        let webpage = $('#webpageID');
        category.on('change', function(e) {
            webpage.empty();
            var req = new XMLHttpRequest();
            req.open("GET", "<?php echo base_url(); ?>/backEnd/Ticker/webpages_from_selected_category/" + category.val(), false);
            req.send();
            let res = JSON.parse(req.response);
            let response = res.response;
            let len = Object.keys(response).length;
            for (let i = 0; i < len; i++) {
                let titleLength = 150;
                var trimmedTitle = response[i]['webpageTitle'].substring(0, titleLength);
                webpage.append("<option value=" + response[i]['webpageID'] + ">" + trimmedTitle + "</option>");
            }
        });
    });

在 Javascript 中,当我尝试解析对象时,出现错误:Uncaught SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 2 column 1

我做错了什么?

【问题讨论】:

  • 您发布的 JSON 是有效的。但是,从错误看来,这与从您的 XMLHttpRequest 返回的内容不同,因为这意味着其中添加了一些无效字符。检查您的 PHP 以确保仅返回 JSON,并在控制台的网络选项卡中检查响应。
  • 另外,既然您一直在使用 jQuery,为什么不直接使用 $.ajax() 而不是 XMLHttpRequest?你的代码会更简洁。
  • 我只是想重用现有代码,这是我的想法。

标签: javascript php jquery json codeigniter


【解决方案1】:

我的问题根本与 JSON 无关。我使用 CodeIgniter 4,它在开发环境中在控制台中发布以下标签:

<script type="text/javascript"  id="debugbar_loader" data-time="1611742634" src="http://ea3.test/index.php?debugbar"></script><script type="text/javascript"  id="debugbar_dynamic_script"></script><style type="text/css"  id="debugbar_dynamic_style"></style>

在我的 JSON 之后。而且我将环境切换到生产环境后,这个脚本标签并没有显示在控制台中,我的代码运行正常。

【讨论】:

  • 那么我们不能重现这个错误?题外话:无法重现。
猜你喜欢
  • 2023-02-25
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多