一场由股票提醒助手插件引发的血案——浅入浅出 jquery autocomplete
它的股票代码是保存在一个stocks.js文件里的。我们在加入新股票输入部分字母时,会运行autocomplete来自己主动搜索匹配stock.js中的股票然后为我们呈现一个选项列表。这就是自己主动填充的功能,例如以下图:


1.1,看源代码的话最好不要用min版本号。改动的方法就是。把上面调用autocomplete时第一个參数stockInfos替换成URL。同一时候设置dataType參数。当须要向远程传递參数时还须要extraParams參数,假设远程传回的数据格式不适合autocomplete,我们还须要自己定义parse函数。然后我先是改成了例如以下(http://suggest3.sinajs.cn/suggest/key=你的查找,这是新浪提供的接口,类似的还有非常多。这里不做详述):

q=shang&limit=10×tamp=1433840697966&key=shang
。除了key字段是我们的远程URL查找必需的以外,autocomplete自己主动加入了q、limit、timestamp參数。可是收到数据(浏览器控制台的Response中输出了varsuggestvalue="shanghai ind h,31,00363,00363,上海实业控股,shsykg;shanghai tonva。
。。是正确地)后并没有运行parse函数和兴许的format相关函数。

原始的parse()函数也并未运行。



),所以request函数中觉得收到的信息是错误的,所以没有运行success处理,也就没有运行parse()函数进行解析。



。
。
findValueCallback, findValueCallback),还有一处是onChange()函数中的request(currentValue, receiveData, hideResultsNow),在这两处分别打上console.log("search")和console.log("onChange")。又一次在浏览器中执行,发现Console端输出了onChange,说明是onChange函数调用了request来发起请求、处理返回结果等等兴许。
所以,request在执行完parse函数以后。调用了传进来的reveiceData函数。继续追踪receiveData函数,在该函数中打上console.log("receiveData"),还能够输出一下data[0],又一次执行后发现输出了receiveData
和data[0]并无差错。
receiveData(q, data)中调用了select.display(data, q),display中也打上console.log("display")输出日志,里面调用了init()函数和fillList()函数,init中并无数据处理相关代码。所以我们关注fillList()。进入fillList()函数,打上console.log("fillList")输出日志作为函数跟踪。不难发现,fillList()函数对我们的parse后的data做了一些处理然后传给了formatItem函数,至此,整条路径基本完毕。观察它是怎样调用formatItem函数的:

!OK。排查阶段最终完了。问题出在了parse返回的数据data并不符合fullList()函数中对data的操作!


一场由股票提醒助手插件引发的血案——浅入浅出 jquery autocomplete的更多相关文章
- 360浏览器有个 谷歌访问助手(插件管理里搜谷歌即可) 可以免费访问:谷歌搜索,Google+ gmail
360浏览器有个 谷歌访问助手(插件管理里搜谷歌即可) 可以免费访问:谷歌搜索,Google+ gmail
- 一场由过滤器Filter引发的血案
一场由过滤器Filter引发的血案 事件起因 本来应该是下图的登录界面 变成了这样 What's the fuck????? 抓狂 原因 解决方法: 在过滤器中给资源文件开个绿色通道
- 九:SpringBoot-整合Mybatis框架,集成分页助手插件
九:SpringBoot-整合Mybatis框架,集成分页助手插件 1.Mybatis框架 1.1 mybatis特点 1.2 适用场景 2.SpringBoot整合MyBatis 2.1 核心依赖 ...
- 一个无锁消息队列引发的血案(四)——月:RingQueue(上) 自旋锁
目录 (一)起因 (二)混合自旋锁 (三)q3.h 与 RingBuffer (四)RingQueue(上) 自旋锁 (五)RingQueue(中) 休眠的艺术 (六)RingQueue(中) 休眠的 ...
- [WCF]缺少一行代码引发的血案
这是今天作项目支持的发现的一个关于WCF的问题,虽然最终我只是添加了一行代码就解决了这个问题,但是整个纠错过程是痛苦的,甚至最终发现这个问题都具有偶然性.具体来说,这是一个关于如何自动为服务接口(契约 ...
- dubbox微服务实例及引发的“血案”
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 主要核心部件: Remoting: 网络通信框架 ...
- Integer.parseInt 引发的血案
Integer.parseInt 处理一个空字符串, 结果出错了, 程序没有注意到,搞了很久, 引发了血案啊!! 最后,终于 观察到了, 最后的部分: Caused by: java.lang.NoC ...
- 写JQuery 插件 什么?你还不会写JQuery 插件
http://www.cnblogs.com/Leo_wl/p/3409083.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui ...
- jquery autocomplete插件
jquery autocomplete插件 https://goodies.pixabay.com/jquery/auto-complete/demo.html autocomplete-table ...
随机推荐
- opencv中相关的矩阵运算
一.矩阵Mat I,img,I1,I2,dst,A,B;double k,alpha;Scalar s;1.加法I=I1+I2;//等同add(I1,I2,I);add(I1,I2,dst,mask, ...
- Ubuntu 15.04 Qt5 链接 mysql数据库
序 最近在Ubuntu15.04下做一个Linux-服务器-客户端通信项目,用到MySQL数据库.开始的时候,在数据库链接时遇到障碍,查找资料解决. 特此记录,分享于此. 环境配置 系统:Ubuntu ...
- python基础学习笔记——迭代器
我们之前一直在用可迭代对象进行操作,那么到底什么是可迭代对象.我们现在就来讨论讨论可迭代对象.首先我们先回顾下我们 熟知的可迭代对象有哪些: str list tuple dic set ...
- C#上位机开发(二)—— Hello,World
上一篇大致了解了一下单片机实际项目开发中上位机开发部分的内容以及VS下载与安装,按照编程惯例,接下来就是“Hello,World!” 1.新建C#项目工程 首先选择新建Windows窗体应用(.NET ...
- Lambert (兰伯特)光照模型
Lambert (兰伯特)光照模型 是光源照射到物体表面后,向四面八方反射,产生的漫反射效果.这是一种理想的漫反射光照模型.如下图:这个是顶点函数处理后的该光照模型,因此看起来像素不够平滑. 漫反射 ...
- Knockout v3.4.0 中文版教程-8-计算监控-纯计算属性
4.纯计算属性 纯计算监控在KO 3.2.0中开始引入,比大多数应用程序使计算监控有更大的性能提升和内存优化.这是因为在自身没有订阅的时候不会保持订阅状态.特性如下 阻止内存泄露 - 避免在应用程序里 ...
- IIS中如何应用程序启用https协议
首先已经安装完了SSL证书 1.找到需要添加的站点,右击 ---> 编辑绑定-->添加--->选择 ""https"-->选择"SSL ...
- ecmascript6入门
ECMAScript 6 入门 阮一峰
- poj2431 Expedition优先队列
Description A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Bein ...
- C/C++ 位操作
C/C++对位操作有如下方法: <1>位操作运算符(注意:下面几个运算符不改变原来的变量的值,只是获得运算的结果即一个新值) 按位取反:~ 位与:& 位或:| 位异或:^ 左移位运 ...