我知道关于这个问题有很多问题,但对不起,我真的对这个错误感到困惑......
我创建了一个登录页面,我使用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 ......
答案 0 :(得分:2)
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
。
答案 1 :(得分:1)
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');