| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1426 人关注过本帖
标题:调用JS脚本,提示 JSON未定义 怎么解决,JS不是很懂。
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏(1)
得分:0 
回复 8楼 easyppt
可以的话,最好是用解释器调用JS,自定义几个函数就可以判断对象和获取对象属性。
程序代码:
TEXT TO cJson TEXTMERGE NOSHOW PRETEXT 15
{"traces":[{"acceptTime":"2016-12-03 12:24:25","acceptAddress":"宿州市","remark":"宿州市邮政速递公司北区揽投部已收件(揽投员姓名:陆登杰,联系电话:18955780863)"},{"acceptTime":"2016-12-03 18:45:11","acceptAddress":"宿州市","remark":"离开宿州市 发往蚌埠市"},{"acceptTime":"2016-12-03 21:13:10","acceptAddress":"蚌埠市","remark":"到达蚌埠市处理中心(经转)"},{"acceptTime":"2016-12-03 21:14:29","acceptAddress":"蚌埠市","remark":"离开蚌埠市 发往南京市(经转)"},{"acceptTime":"2016-12-04 01:31:00","acceptAddress":"南京市","remark":"到达EMS航空集散中心(南京)处理中心(经转)"},{"acceptTime":"2016-12-04 06:34:00","acceptAddress":"南京市","remark":"离开南京市 发往北京市(经转)"},{"acceptTime":"2016-12-04 08:39:00","acceptAddress":"北京市","remark":"到达  中国邮政速递物流股份有限公司北京市邮件处理中心(航 处理中心"},{"acceptTime":"2016-12-04 11:22:04","acceptAddress":"北京市","remark":"离开中国邮政速递物流股份有限公司北京市国货航航空邮件处 发往北京邮政速递上地区域分公司清华营投部"},{"acceptTime":"2016-12-04 13:23:00","acceptAddress":"北京市","remark":"北京邮政速递上地区域分公司清华营投部安排投递,预计23:59:00前投递"},{"acceptTime":"2016-12-04 15:50:40","acceptAddress":"北京市","remark":"投递并签收,签收人:本人收"}]}
ENDTEXT
TEXT TO jsCode TEXTMERGE NOSHOW PRETEXT 15
<script>
var json     = function(jsonString){return JSON.parse(jsonString);};
var toString = function(obj){return Object.prototype.toString.call(obj);};
var getValue = function(obj,name){return obj[name];};
var isArray  = function(obj){return Array.isArray(obj);};
var getArray = function(obj,num){return obj[num];};
</script>
ENDTEXT
dom = CREATEOBJECT("htmlfile")
dom.write(jsCode)
win  = dom.parentWindow
json = win.json(cJson)
? win.toString(json.traces)
? win.isArray(json.traces)
FOR i=0 TO json.traces.length-1
    obj = win.getArray(json.traces,i)
    ? win.getValue(obj,"acceptAddress"), win.getValue(obj,"remark")
ENDFOR



[此贴子已经被作者于2023-7-13 06:44编辑过]

2023-07-12 16:56
easyppt
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:253
专家分:502
注 册:2021-11-24
收藏
得分:0 
json = win.json(cJson)

这句显示错误: OLE 错误码 0x80020101:未知的COM状态码
WIN11系统
2023-07-12 19:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
以下是引用easyppt在2023-7-12 19:38:32的发言:

json = win.json(cJson)

这句显示错误: OLE 错误码 0x80020101:未知的COM状态码
WIN11系统

看看注册表
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

vfp开发环境时,增加数据项:
vfp9.exe    DWORD值11111(10进制)

重启vfp
2023-07-12 20:52
easyppt
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:253
专家分:502
注 册:2021-11-24
收藏
得分:0 
吹版,按照你说的,可以了
要是编译成EXE,是不是注册表 也要加进去啊?

[此贴子已经被作者于2023-7-12 22:00编辑过]

2023-07-12 21:25
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
以下是引用easyppt在2023-7-12 21:25:46的发言:

要是编译成EXE,是不是注册表 也要加进去啊?

是,按EXE的文件名。

2023-07-13 06:48
sostemp
Rank: 4
等 级:贵宾
威 望:10
帖 子:202
专家分:284
注 册:2009-6-2
收藏
得分:0 
以下是引用吹水佬在2023-7-12 16:56:44的发言:

可以的话,最好是用解释器调用JS,自定义几个函数就可以判断对象和获取对象属性。



吹版,怎么样将json字串中的所有key全自动转为小写?

[此贴子已经被作者于2023-7-15 13:22编辑过]

2023-07-15 13:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
以下是引用sostemp在2023-7-15 13:21:03的发言:

吹版,怎么样将json字串中的所有key全自动转为小写?

能解析执行JS的不用转换
2023-07-15 16:13
sostemp
Rank: 4
等 级:贵宾
威 望:10
帖 子:202
专家分:284
注 册:2009-6-2
收藏
得分:0 
以下是引用吹水佬在2023-7-15 16:13:39的发言:


能解析执行JS的不用转换

有的Key大小写解析会报错的,小写更通用便利些。
2023-07-15 21:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
以下是引用sostemp在2023-7-15 21:06:06的发言:


有的Key大小写解析会报错的,小写更通用便利些。

解析执行JS的大小写都可以,name就是一个字符串,试试:
程序代码:
TEXT TO jsCode TEXTMERGE NOSHOW PRETEXT 15
<script>
var json     = function(jsonString){return JSON.parse(jsonString);};
var getValue = function(obj,name){return obj[name];};
</script>
ENDTEXT
dom = CREATEOBJECT("htmlfile")
dom.write(jsCode)
js = dom.defaultView
json = js.json('{"Abcd":1234,"aB汉字CD":5678}')
? js.getValue(json,"Abcd")
? js.getValue(json,"aB汉字CD")





[此贴子已经被作者于2023-7-16 05:08编辑过]

2023-07-15 22:33
sostemp
Rank: 4
等 级:贵宾
威 望:10
帖 子:202
专家分:284
注 册:2009-6-2
收藏
得分:0 
以下是引用吹水佬在2023-7-15 22:33:11的发言:


解析执行JS的大小写都可以,name就是一个字符串,试试:

TEXT TO jsCode TEXTMERGE NOSHOW PRETEXT 15
<script>
var json     = function(jsonString){return JSON.parse(jsonString);};
var getValue = function(obj,name){return obj[name];};
</script>
ENDTEXT
dom = CREATEOBJECT("htmlfile")
dom.write(jsCode)
js = dom.defaultView
json = js.json('{"Abcd":1234,"aB汉字CD":5678}')
? js.getValue(json,"Abcd")
? js.getValue(json,"aB汉字CD")

这几天初学 json 这类知识点,个人理解。
谢谢回复,但是
用ScriptControl引入时解析略敏感,htmlfile相对不过敏。
但ScriptControl相对使用更便捷,htmlfile有可能还要设注册表。
小写时,两者均正常解析。大小写时,前者错,后者正常。
所以变化 Json数据中 key值为小写,更加捧一点。
2023-07-16 09:42
快速回复:调用JS脚本,提示 JSON未定义 怎么解决,JS不是很懂。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022120 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved