gpt4 book ai didi

php - json_encode 创建格式错误的 JSON(带有额外的隐藏字符)

转载 作者:可可西里 更新时间:2023-11-01 13:19:34 24 4
gpt4 key购买 nike

我正在使用 PHP 的 json_encode() 返回一些数据,由 jQuery 的 ajax() 检索:

简化的 JS:

$.ajax({
dataType: 'json',
contentType: 'application/json',
cache: false,
type: 'POST',
url: './api/_imgdown.php',
error: function(jqXHR, textStatus, errorThrow) {
console.log(jqXHR, textStatus, errorThrow);
},
success: function(data, textStatus, jqXHR) {
console.log(data, textStatus, jqXHR);
}
});

PHP 是:

header('Content-Type: application/json; charset=UTF-8');
//default apiResponse
$apiResponse = [
"status" => 1,
"message" => "success",
"data" => null
];

然后当 php 运行我的代码时,它通过添加以下数据结束:

$apiResponse['data'][] = [
"mid" => (int)$mid,
"card_type" => $card_type,
"header_size" => (int)$headers['Content-Length'],
"saved_size" => (int)filesize($imgSavePath),
"saved_path" => $imgSavePath
];
//spit out the JSON
echo json_encode($apiResponse);
exit();

JSON:

{"status":1,"message":"success","data":[{"mid":340052,"card_type":"kakusei","header_size":48337,"saved_size":48337,"saved_path":"..\/card\/kakusei\/340052.png"}]}

乍一看似乎是正确的。我检索此 PHP 的 Ajax 总是以 parseerror 结尾(因此进入 ajax()error 部分)。

如果您将此 JSON 复制并粘贴到 http://jsonlint.com/ 上,它会显示“意外 token ”并且 http://jsonformatter.curiousconcept.com/ 会显示无效。

我已经尝试过 echo json_encode($apiResponse, JSON_UNESCAPED_SLASHES); 尽管转义斜线没问题 \/ 但没有任何区别。

但是什么不完全有效?难道 PHP 不应该返回有效的 JSON 吗?

额外信息:在 Windows7、Chrome v28.XX 上测试,在 Apache 上使用 PHP 5.4.XX

我在实际发布此问题之前阅读过的问题:


更新:

从 SO 复制到 JSONlint 给出有效的 json。所以我进一步调查了一下,注意到 PHP 正在创建一个奇怪的隐藏字符,它实际上使 json 无效。请参见下面的屏幕截图。我该如何解决? json invalid character

最佳答案

这可能是 BOM 标记的问题。尝试将文件另存为普通 UTF-8。

关于php - json_encode 创建格式错误的 JSON(带有额外的隐藏字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17427775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com