JSON.parse 位置 0 处的 JSON 中的意外标记

莱安德罗·费米亚

[解决方案]将相关的 .php 文件保存在 ANSI 中解决了这个问题。检查接受的答案以获取更多信息。

尝试解析来自 PHP 的 JSON 时,我在控制台中收到此错误json_encode()

VM2538:1 Uncaught SyntaxError: Unexpected token   in JSON at position 0
at JSON.parse (<anonymous>)
at Object.success (products.js:169)
at i (jquery-v3.2.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-v3.2.1.min.js:2)
at A (jquery-v3.2.1.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-v3.2.1.min.js:4)

我尝试按照某些答案中的建议将 MySql 的服务器和表排序规则设置为 utf8_unicode_ci,但这没有区别。还添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">到 HTML 头和header('Content-Type: application/json; charset=utf-8');PHP 文件,这改变了一点输出json_encode()(两个示例都包含在底部)

[更新]这是 JavaScript :(atm 我只想将一个值记录到控制台,所以成功功能不完整)

function loadProducts() {
$.ajax({
  method: 'GET',
  dataType: 'json',
  url: 'ajax/list_products.php',
  success: function(products) {
    var json = products;
    console.log(json);
    console.log(json[0].Code);
    console.log(json[0]["Code"]);
  }
});

}

这是来自list_products.php以下内容的 PHP 代码

<?php
$root = $_SERVER['DOCUMENT_ROOT'];
require_once $root . "/commander/class/product.php";

$product = new Product();
$productList = $product->listProducts();

if (!empty($productList) > 0) {
  echo json_encode($productList);
}else {
  echo "Error - Records are empty.";
}

这是来自list_products.phpwithout的输出header('Content-Type: application/json; charset=utf-8');PasteBin

header('Content-Type: application/json; charset=utf-8');: PasteBin

马修麦克卢尔

缺少或无效的标头可能会导致响应以意外的格式出现,并在开头留下一个不可见的 '\ufeff' 标记。这用于说明接收到的消息的字节序并使其对任何接收者可读(但难以在应用程序内部使用)。

在您是发件人的情况下,您将需要调整您的标题以获得正确的字符集和内容类型。

在您是接收者的情况下,您可以通过删除第一个字符并在正文上调用 JSON.parse(或您的语言的等效项)将响应转换为有效的 JSON。

有关更多信息,请参阅此问题、答案和 wiki:

使用 PHP 中的数组中的 JSON.parse 时出现“意外令牌”

https://en.wikipedia.org/wiki/Byte_order_mark#UTF-16

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

期望字符串时JSON.parse位置0处JSON中的意外角度标记c

在节点中使用JSON.parse使用有效JSON的“位置0处的JSON中的意外令牌”

JSON.parse()导致错误:`SyntaxError:JSON中位置0处的意外令牌`

获取SyntaxError:运行Lambda测试时,JSON意外标记u在位置0处

将数组从php传递到ajax时,JSON意外标记C在位置0处

JSON.Parse:JSON中位置0处的意外令牌B

JSON解析:位置0处的意外字符(ÿ)

angular ajax:JSON中位置0处的意外标记I

SyntaxError:Object.parse(native)(AngularJS)位置0处的JSON中的意外令牌<

JSON 中位置 0 处的意外标记 u 不适用于异步

未捕获的语法错误:JSON.parse 位置 0 处的 JSON 中的意外标记 d(<匿名>)

JSON 中位置 0 处的意外标记

“解析器错误”语法错误:位置 0 处的 JSON 中的意外标记 <

将 proj4js 与 webpack 捆绑会导致“位置 0 处的 JSON 中出现意外标记 m”

Angular SyntaxError:JSON 中位置 0 的意外标记 P

VM299:1 未捕获的语法错误:JSON.parse 位置 0 处的 JSON 中的意外标记 u(<匿名>)

在 C 中发布 JSON 对象时,位置 0 处出现意外标记 004

意外的标记 ?在位置 0 处的 JSON

undefined:1 undefined ^ SyntaxError: JSON 中的意外标记 u 在位置 0

错误语法错误:JSON.parse 位置 0 处的 JSON 中的意外标记 u (<anonymous>)

node.js 无法解析 json - 原因:JSON 中位置 0 的意外标记

提取中位置 0 处的 JSON 中的意外标记 P。请帮我

错误“JSON 中的意外标记 P 在 fetch 中的位置 0”

<Jasmine> 位置 0 处的 JSON 中的意外标记 u

SyntaxError:JSON 中位置 0 Express 的意外标记

JSON 中位置 0 处的意外标记

保存到本地存储 - 语法错误:JSON 中的意外标记 u 位于位置 0

未捕获的语法错误:控制台中 App.js:18:1 处 JSON.parse (<anonymous>) 位置 0 处 JSON 中的意外标记 u

未捕获的语法错误:JSON.parse 中位置 0 处的 JSON 中的意外标记 < - Wordpress