在javascript中访问用户会话数据的麻烦
Trouble to access user session data in javascript
我从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:"'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数据,但我不能得到user_id, user_type等值。我发现数据类型使用typeof为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获取user_id ?
这应该会很好:
var userId = JSON.parse(someObj.dataJSON || {}).user_id;
注意,这里的someObj
是您在action
, id
, data
等中的变量。
在服务器的响应中,您接收到一个字符串化的JSON对象,因此我们解析它,以接收一个真实的对象,而不是字符串。然后直接访问所需的属性
我已经找到了这个问题的答案。下面是parseUrl响应数组的最终输出,我想从dataJSON中提取数据。
parseUrl回应:
{
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
}
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 在javascript中访问用户会话数据的麻烦
- 从流星收集数据时遇到麻烦
- 在使用ajax用PHP和POST显示数据时遇到了麻烦
- 麻烦提取数据从2D数组jQuery
- 麻烦使用javascript浏览器检测获得的数据大小
- 使用jquery读取json数据时遇到麻烦
- 流星,MongoDB.从集合中获取数据的麻烦(查找两个日期之间的文档)
- 麻烦添加前导零提交的表单数据在javascript
- 使用MVC访问从另一个视图传递的数据时遇到麻烦
- 从数组中删除一行数据时遇到麻烦.PHP + Javascript
- 麻烦从Firebase数据库获取数据Node.js/JavaScript