You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:为何出现Uncaught SyntaxError: Unexpected end of JSON input错误?

解决「Uncaught SyntaxError: Unexpected end of JSON input」错误

嘿,我一眼就瞅到你代码里的几个问题,咱们一个个拆解来解决:

1. HTML属性的低级拼写错误

你写的HTML按钮里,data- citizens这个属性多了个空格!正确的写法应该是data-citizens——这个空格会让浏览器完全识别错这个属性,导致$(this).data('citizens')拿到的要么是undefined要么是空字符串,用JSON.parse解析空内容可不就直接抛出「Unexpected end of JSON input」错误嘛,这大概率是你当前报错的核心原因!

2. JSON字符串的有效性排查

就算你修正了属性名称,要是还报错,就得检查json_encode($citizens)输出的内容是不是合法JSON:

  • 直接在浏览器里查看按钮的HTML源代码,看看data-citizens的值有没有完整的大括号/中括号,有没有乱码或者未闭合的情况;
  • 如果$citizens里包含引号、换行这类特殊字符,json_encode默认输出的内容可能在HTML属性里被截断,这时候给它加个参数:json_encode($citizens, JSON_HEX_QUOT | JSON_HEX_TAG),强制转义特殊字符,避免和HTML属性的引号冲突。

3. 给代码加个调试保险

你可以在JS里先打印拿到的字符串,看看问题出在哪:

$('.view-profile').on('click', function(e) {
  e.preventDefault();
  var id = $(this).data('id');
  var str = $(this).data('citizens');
  console.log('当前拿到的citizens字符串:', str); // 先看这个输出
  try {
    var citizensArray = JSON.parse(str);
    alert(citizensArray[0].id);
  } catch (err) {
    console.error('JSON解析报错:', err);
  }
});

这样就算解析失败,你也能明确是字符串为空,还是字符串本身格式就不对。

修正后的完整代码示例

HTML/PHP部分:

<button type="button" class="btn btn-success btn-sm view-profile" 
        data-citizens="<?php echo json_encode($citizens, JSON_HEX_QUOT | JSON_HEX_TAG);?>" 
        data-id="<?php echo $citizen['id'];?>">
  <i class="fa fa-fw fa-user"></i> 查看资料
</button>

JavaScript部分:

$('.view-profile').on('click', function(e) {
  e.preventDefault();
  var id = $(this).data('id');
  var str = $(this).data('citizens');
  
  // 先判断有没有拿到数据
  if (!str) {
    alert('未获取到公民数据');
    return;
  }
  
  try {
    var citizensArray = JSON.parse(str);
    // 再判断数组是否有内容
    if (citizensArray.length > 0) {
      alert(citizensArray[0].id);
    } else {
      alert('公民数据为空');
    }
  } catch (err) {
    console.error('数据解析失败:', err);
    alert('数据格式有误');
  }
});

先把属性的空格问题解决,再一步步验证JSON的有效性,加上错误捕获能让你的代码稳不少~

内容的提问来源于stack exchange,提问作者Karl Jucutan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:11:27