|
本帖最后由 smsn 于 2022-12-4 23:32 编辑
对初学者不友好啊。callback=jQuery11230302560335676481_1670064512432&
这个地方可以改为其他任意的字符 比如 callback=abc&
然后用下面的方法jsonp解析:
摘抄至 https://club.excelhome.net/thread-1303169-2-1.html
3. Jsonp解析方法
还有一种Json文件称之为Jsonp. 它的数据存放格式与普通Json不同之处是, 它把Json文本内容作为一个函数参数存放. 就象这个样子: Callback (json)
这里有一个存入电话号码信息的简单Jsonp实例(忘记了来自哪个网站):
cb({mobile:'13012345456',province:'重庆',isp:'中国联通',stock:'1',amount:'10000',maxprice:'0',minprice:'0'});
可以看到在结构体cb(…)的括号内就是一个普通的Json. 下面给出其解析方法:
Sub jsonp1()
Set oDom = CreateObject("htmlfile")
Set oWindow = oDom.parentWindow
strHtml = "cb({mobile:'13012345456',province:'重庆',isp:'中国联通',stock:'1',amount:'10000',maxprice:'0',minprice:'0'});"
oWindow.execScript "function cb(o){ js=o };"
oWindow.execScript strHtml
MsgBox oWindow.js.mobile
End Sub
讨论:
(1) 我们构建了一个名为cb的函数: function cb(o){js=o}. 函数名与jsonp文档内的名字一样;
(2) 这个函数有一个参数o,函数的功能是将传入的参数赋值给js;参数o可以是任意类型的。
(3) 当execScript解析jsonp(即变量strHtml)时,实际上是在执行函数cb(o).这里是把jsonp内的json部分作为参数传递给js, 最后结果是:
js={mobile:'13012345456',province:'重庆',isp:'中国联通',stock:'1',amount:'10000',maxprice:'0',minprice:'0'}
这是一个标准的以对象形式存在的Json. 可按常规方法访问各项值. |
|