vps交流

[疑问] ===请教下js大佬===


本帖最后由 zxjlhsq 于 2022-8-16 14:45 编辑

想调用jd的搜索词做成本地搜索词。

https://wq.jd.com/bases/searchpromptwords/searchpromptwords

网上找了一段遍历代码貌似不成功,js大佬请教下。

  1. for (var i = 0, l = callback.searchwords.length; i < l; i++) {
  2. 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几分钟就写出来了