# 请解释 jsonp 的工作原理,以及为什么不是 ajax

jsonp 的原理:jsonp 之所以能跨域,是因为他并不是发送 ajax 请求,并不是利用 XMLHTTPRequest 对象和服务器进行通信,他其实是利用动态创建的script标签,而 script 标签是没有同源策略限制的,可以跨域。

# 具体方法

创建 script 标签,然后将其 src 指向真实服务端的地址,在这个地址后面有一个参数比如callback=a,然后服务端就可以解析这个 URL 中的 callback=a,在服务端返回数据时,就会调用 a 方法去包裹一段数据,然后返回这段 js 代码,相当于在前端去执行这个 a 方法。在前端发送请求之前,要在 window 上去注册这个 a 方法,那么在服务商返回这个 a 方法执行的时候,就可以去之前 window 上定义的 a 方法中获得数据了。