【发布时间】: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