繁体   English   中英

未捕获的SyntaxError:JSON.parse中位置0的JSON中的意外标记a( <anonymous> )

[英]Uncaught SyntaxError: Unexpected token a in JSON at position 0 at JSON.parse (<anonymous>)

我知道关于这个问题有很多问题,但对不起,我真的对这个错误感到困惑......

我创建了一个登录页面,我使用ajax作为POST请求。当我使用它时会发生什么

$.ajax({
 url:'../ajax/checklogin.php',
 type:'POST',
 dataType:'JSON',
 data:$('form').serialize(),   
  success: function(result){
  $.post("../www/login.php",{ users_id: JSON.parse(result.users_id)}).done(window.location.href='../www/index.php');
  }
});

$.post正在工作,但是当我试图添加另一个字段来解析我得到了这个错误..错误是在users_active ..由于某种原因我不知道为什么我得到错误

$.post("../www/login.php",{ users_id: JSON.parse(result.users_id),users_active: JSON.parse(result.users_active)}).done(window.location.href='../www/index.php');

另一个字段很好但是唯一给我错误的字段是users_active ..我甚至检查正在返回的json数组它们是有效的json ...

JSON.parse()接受一个字符串并将其转换为JavScript对象。

你很幸运, JSON.parse("12345")可以转换为new Number("12345") ,这确实是一个整数。

result.users_active已经是一个JavaScript对象(或数组),或者可能是一个不代表JSON对象的String,因此解析将导致语法错误,如https://www.w3schools.com/js/js_json_parse中所述。 asp

我假设您需要JSON.stringify() ,但为了确保这一点,您应该发布一些代码或结果对象。 https://www.w3schools.com/js/js_json_stringify.asp

编辑:现在我已经看到了对象, "active"是一个简单的字符串,你不能去除引号。 所以只需使用users_active: result.users_active

JSON.parse不会删除引号(“),但会将您的数据转换为对象,布尔值或字符串 - 如果它们之前是有效的json(不仅仅是您已经传递的属性的值)。请参阅: https:/ /developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

如果你想确保将整数或字符串(或任何你需要的东西)传递给你的ajax帖子,只需使用适当的javascript函数,如parseInt()或String()。

在这里查看您的数据示例:

var result = {
  "id":"26",
  "users_id":
  "201710001",
  "users_username":"123",
  "users_active":"active"
  };

$.post("../www/login.php", { 
    users_id: parseInt(result.users_id),
  users_active: String(result.users_active) 
  }).done(window.location.href='../www/index.php');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM