在javascript中访问用户会话数据时遇到问题
我从PHP获取要表达的会话数据,并读取它。但现在我遇到了麻烦,我无法读取JSON字符串数据。我曾尝试在javascript中访问用户会话数据时遇到问题,javascript,json,Javascript,Json,我从PHP获取要表达的会话数据,并读取它。但现在我遇到了麻烦,我无法读取JSON字符串数据。我曾尝试JSON.parse()和JSON.stringify,但仍然没有成功,所以请为我提供解决方案 下面是JSON字符串 action: 'write', id: 'iurrv1rv8qjrb7sdb69io2mqi0', data: 'lang|O:4:"I18n":11:{s:19:"\u0000CActiveRecord\u0000_new";b:0;s:26:"\u0000CActi
JSON.parse()
和JSON.stringify
,但仍然没有成功,所以请为我提供解决方案
下面是JSON字符串
action: 'write',
id: 'iurrv1rv8qjrb7sdb69io2mqi0',
data: 'lang|O:4:"I18n":11:{s:19:"\u0000CActiveRecord\u0000_new";b:0;s:26:"\u0000CActiveRecord\u0000_attributes";a:9:{s:2:"id";s:1:"9";s:9:"i18n_flag";s:44:"ac84a0fd7788953be215d0c39e0f6475c5e02708.png";s:9:"i18n_name";s:5:"en_gb";s:9:"i18n_code";s:5:"en-gb";s:14:"i18n_full_name";s:10:"English-UK";s:10:"is_default";s:1:"1";s:9:"is_active";s:1:"1";s:10:"created_at";s:19:"2015-05-18 17:29:30";s:10:"updated_at";s:19:"2015-06-29 11:52:18";}s:23:"\u0000CActiveRecord\u0000_related";a:0:{}s:17:"\u0000CActiveRecord\u0000_c";N;s:18:"\u0000CActiveRecord\u0000_pk";s:1:"9";s:21:"\u0000CActiveRecord\u0000_alias";s:1:"t";s:15:"\u0000CModel\u0000_errors";a:0:{}s:19:"\u0000CModel\u0000_validators";N;s:17:"\u0000CModel\u0000_scenario";s:6:"update";s:14:"\u0000CComponent\u0000_e";N;s:14:"\u0000CComponent\u0000_m";N;}currency|O:8:"Currency":11:{s:19:"\u0000CActiveRecord\u0000_new";b:0;s:26:"\u0000CActiveRecord\u0000_attributes";a:8:{s:2:"id";s:1:"3";s:13:"currency_name";s:4:"Euro";s:13:"currency_code";s:3:"EUR";s:14:"currency_signs";s:3:"€";s:10:"is_default";s:1:"0";s:9:"is_active";s:1:"1";s:10:"created_at";s:19:"2015-05-06 14:16:01";s:10:"updated_at";s:19:"2015-05-06 14:16:54";}s:23:"\u0000CActiveRecord\u0000_related";a:0:{}s:17:"\u0000CActiveRecord\u0000_c";N;s:18:"\u0000CActiveRecord\u0000_pk";s:1:"3";s:21:"\u0000CActiveRecord\u0000_alias";s:1:"t";s:15:"\u0000CModel\u0000_errors";a:0:{}s:19:"\u0000CModel\u0000_validators";N;s:17:"\u0000CModel\u0000_scenario";s:6:"update";s:14:"\u0000CComponent\u0000_e";N;s:14:"\u0000CComponent\u0000_m";N;}user_id|i:52;user_type|i:3;user_email|s:21:"laxman@mailinator.com";username|s:3:"lax";iplocation|a:11:{s:10:"statusCode";s:2:"OK";s:13:"statusMessage";s:0:"";s:9:"ipAddress";s:14:"103.240.34.199";s:11:"countryCode";s:2:"IN";s:11:"countryName";s:5:"India";s:10:"regionName";s:7:"Gujarat";s:8:"cityName";s:9:"Ahmedabad";s:7:"zipCode";s:6:"380028";s:8:"latitude";s:7:"23.0333";s:9:"longitude";s:7:"72.6167";s:8:"timeZone";s:6:"+05:30";}',
time: '1444389652',
dataJSON: '{"lang":{},"currency":{},"user_id":52,"user_type":3,"user_email":"laxman@mailinator.com","username":"lax","iplocation":{"statusCode":"OK","statusMessage":"","ipAddress":"103.240.34.199","countryCode":"IN","countryName":"India","regionName":"Gujarat","cityName":"Ahmedabad","zipCode":"380028","latitude":"23.0333","longitude":"72.6167","timeZone":"+05:30"}}' }
我能够读取JSON数据,但无法获取用户id、用户类型等值。我发现数据类型使用typeof for dataJSON,它以字符串形式返回
console.log(parseUrl.dataJSON)
给出以下输出
{
"lang": {},
"currency": {},
"user_id": 52,
"user_type": 3,
"user_email": "laxman@mailinator.com",
"username": "lax",
"iplocation": {
"statusCode": "OK",
"statusMessage": "",
"ipAddress": "103.240.34.199",
"countryCode": "IN",
"countryName": "India",
"regionName": "Gujarat",
"cityName": "Ahmedabad",
"zipCode": "380028",
"latitude": "23.0333",
"longitude": "72.6167",
"timeZone": "+05:30"
}
}
所以现在麻烦来了如何从这个JSON获取用户id?这应该很有用:
var userId = JSON.parse(someObj.dataJSON || {}).user_id;
注意,这里的someObj
是您在中拥有的action
、id
、数据
等变量
在服务器的响应中,您接收到一个字符串化的JSON对象,因此我们对其进行解析,以接收一个真实的对象,而不是字符串。然后访问想要的属性。我已经找到了问题的答案。下面是parseUrl响应数组的最终输出,我想从dataJSON中提取数据 解析URL响应:
{
action: 'write',
id: 'biroh26adl9mc954nrrlf6bqm0',
data: 'lang|O: 4: "I18n": 11: {
s: 19: "\u0000CActiveRecord\u0000_new";b: 0;s: 26: "\u0000CActiveRecord\u0000_attributes";a: 9: {
s: 2: "id";s: 1: "9";s: 9: "i18n_flag";s: 44: "ac84a0fd7788953be215d0c39e0f6475c5e02708.png";s: 9: "i18n_name";s: 5: "en_gb";s: 9: "i18n_code";s: 5: "en-gb";s: 14: "i18n_full_name";s: 10: "English-UK";s: 10: "is_default";s: 1: "1";s: 9: "is_active";s: 1: "1";s: 10: "created_at";s: 19: "2015-05-18 17:29:30";s: 10: "updated_at";s: 19: "2015-06-29 11:52:18";
}s: 23: "\u0000CActiveRecord\u0000_related";a: 0: {
}s: 17: "\u0000CActiveRecord\u0000_c";N;s: 18: "\u0000CActiveRecord\u0000_pk";s: 1: "9";s: 21: "\u0000CActiveRecord\u0000_alias";s: 1: "t";s: 15: "\u0000CModel\u0000_errors";a: 0: {
}s: 19: "\u0000CModel\u0000_validators";N;s: 17: "\u0000CModel\u0000_scenario";s: 6: "update";s: 14: "\u0000CComponent\u0000_e";N;s: 14: "\u0000CComponent\u0000_m";N;
}currency|O: 8: "Currency": 11: {
s: 19: "\u0000CActiveRecord\u0000_new";b: 0;s: 26: "\u0000CActiveRecord\u0000_attributes";a: 8: {
s: 2: "id";s: 1: "3";s: 13: "currency_name";s: 4: "Euro";s: 13: "currency_code";s: 3: "EUR";s: 14: "currency_signs";s: 3: "€";s: 10: "is_default";s: 1: "0";s: 9: "is_active";s: 1: "1";s: 10: "created_at";s: 19: "2015-05-06 14:16:01";s: 10: "updated_at";s: 19: "2015-05-06 14:16:54";
}s: 23: "\u0000CActiveRecord\u0000_related";a: 0: {
}s: 17: "\u0000CActiveRecord\u0000_c";N;s: 18: "\u0000CActiveRecord\u0000_pk";s: 1: "3";s: 21: "\u0000CActiveRecord\u0000_alias";s: 1: "t";s: 15: "\u0000CModel\u0000_errors";a: 0: {
}s: 19: "\u0000CModel\u0000_validators";N;s: 17: "\u0000CModel\u0000_scenario";s: 6: "update";s: 14: "\u0000CComponent\u0000_e";N;s: 14: "\u0000CComponent\u0000_m";N;
}user_id|i: 52;user_type|i: 3;user_email|s: 21: "laxman@mailinator.com";username|s: 3: "lax";iplocation|a: 11: {
s: 10: "statusCode";s: 2: "OK";s: 13: "statusMessage";s: 0: "";s: 9: "ipAddress";s: 14: "103.240.34.199";s: 11: "countryCode";s: 2: "IN";s: 11: "countryName";s: 5: "India";s: 10: "regionName";s: 7: "Gujarat";s: 8: "cityName";s: 9: "Ahmedabad";s: 7: "zipCode";s: 6: "380028";s: 8: "latitude";s: 7: "23.0333";s: 9: "longitude";s: 7: "72.6167";s: 8: "timeZone";s: 6: "+05:30";
}',
time: '1444451442',
dataJSON: '{
"lang": {
},
"currency": {
},
"user_id": 52,
"user_type": 3,
"user_email": "laxman@mailinator.com",
"username": "lax",
"iplocation": {
"statusCode": "OK",
"statusMessage": "",
"ipAddress": "103.240.34.199",
"countryCode": "IN",
"countryName": "India",
"regionName": "Gujarat",
"cityName": "Ahmedabad",
"zipCode": "380028",
"latitude": "23.0333",
"longitude": "72.6167",
"timeZone": "+05:30"
}
}'
}
解析代码:
var parseUrl = url.parse(req.url, true).query;
res.writeHead(200, {'Content-type': "text/plain"});
res.end(sessionHandler.run(parseUrl));
if ("string" === typeof (parseUrl.dataJSON)) {
var _objUser = JSON.parse(parseUrl.dataJSON);
console.log(_objUser.user_id) // Response : 52
}
谢谢你,Yavor,整个json对象存储在parseUrl变量中,你的意思是喜欢console.log(json.parse(parseUrl.dataJSON | |{}).user_id);我是对的,但它仍然在我的控制台中给我一个“未定义”的错误。
parseUrl
是实际对象吗?你确定它没有被字符串化吗?我下面的朋友是代码:var server=require(“http”).createServer(function(req,res){var parseUrl=url.parse(req.url,true)。query;res.writeHead(200,{Content-type':“text/plain”});res.end(sessionHandler.run(parseUrl));console.log(JSON.parse(parseUrl.dataJSON|{})。user|id)});看看这段代码,我无法测试它。未知变量太多。只要确保这不是以某种方式异步完成的。由于它是nodejs,我想是的。请阅读昨天我发布的这个问题,以获得读取sesison数据的解决方案,但今天我找到了自己,但后来我又遇到了读取json数据的新问题。您可能会更好地了解这是一个工作代码,当使用typeof获取parserUrl的响应数据类型时,它会返回object。