===请教下js大佬===

63次阅读

共计 761 个字符,预计需要花费 2 分钟才能阅读完成。

想调用 jd 的搜索词做成本地搜索词。
https://wq.jd.com/bases/searchpromptwords/searchpromptwords
网上找了一段遍历代码貌似不成功,js 大佬请教下。
for (var i = 0, l = callback.searchwords.length; i < l; i++) {
document.writeln(callback[i].searchwords);
复制代码

你本身就写错,就算写对也获取不到,这是一个 jsonp 的格式,先把括号里的内容提出来再解析就行了。另外循环不要 var,影响性能,用 let=== 请教下 js 大佬 ===我猜
你是在自己网页上用 js 给 jd 的网址获取数据, 然后失败对吧.
跨域, 就这个关键词, 你去搜索下.

Faxlok 发表于 2022-8-16 14:45
你本身就写错,就算写对也获取不到,这是一个 jsonp 的格式,先把括号里的内容提出来再解析就行了。另外循环 …

查了资料确实是 jsonp 看来方向错了。谢谢大佬。我再去找找资料学习下

longkulo 发表于 2022-8-16 14:46
我猜
你是在自己网页上用 js 给 jd 的网址获取数据, 然后失败对吧.

是我想的太天真了,json 貌似可以 js 调用 jsonp 只能 get 访问这样就涉及到跨域了。我做过,首先用 AJAX/axios 获取到网页整体,然后正则去掉头部 callback(再用 JS 替换掉最后一个)这时再用 JSON.parse()转化为 JS 对象,然后遍历 这个对象的 searchwords 数组,即可!这是一个 jsonp 因此它本身就能实现跨域,只要以 script 方式引入进来然后实现 callback 回调就好了,可以参考一下开源库的 jsonp 实现,相当简单这玩意 python 几分钟就写出来了

正文完