大神们好!小弟在最近学习jquery里面关于ajax部分,有几个问题不太明白,希望能和大神们讨论一下:
1.jq中使用jsonp,callback=?能自动补全函数名,这是什么原理,原生js需要什么方法才能实现自动补全函数名呢?或者原生下如何才能知道应该补全什么样?
2.对于jsonp跨域也是通过瞬间添加script标签调用回调函数然后瞬间删除实现的吗?
3.看到ajax里面判断了mimeType和调用了xhr.getResponseHeader()方法,这样做的目的是什么?还调用了其他什么关于http方面的方法?作用?
4.在学习jq中,对于jq实现原理,对应原生的方法,该如何拆解和分析?该从哪开始?
1、jsonp必须遵循一个固定的格式。即请求的URL的search中必须存在一个jsonpcallback=functionName;响应的格式为functionName(/ json data /); 原理就是利用
script不受同源策略限制
的特点。2、在server返回数据之后,尽量删掉这个script。因为页面中有n多个jsonp,就会有n多个生成的script标签。造成dom臃肿。并且别人也可以通过观察html来指导你jsonp的请求细节。
3、是看重写的mimeType是不是和server返回的一样。如果一样就没必要重写mimeType了。除此之外还用了setRequestHeader、overriderMimeType、abort等方法。
4、看代码流程即可。我写了一个简单点的例子
用法和jquery的一样。不过我暴露的是x变量,不是$.