$.ajax请求jsonp的原理
时间: 2023-09-13 07:06:59 浏览: 97
在使用 `$.ajax` 发送 JSONP 请求时,jQuery 会利用 `<script>` 标签的跨域特性,动态创建一个 `<script>` 标签,标签的 `src` 属性指向请求的 URL 地址,同时在 URL 后面加上一个名为 `callback` 的参数,这个参数的值是一个全局回调函数的名称。例如:
```javascript
$.ajax({
type: "GET",
url: "http://example.com/api/data",
dataType: "jsonp",
jsonp: "callback",
success: function(data){
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown){
console.log("请求失败:" + textStatus);
}
});
```
上面的代码中,`jsonp` 属性指定了回调函数的名称为 `callback`,那么请求的 URL 就会变成类似这样的形式:
```
http://example.com/api/data?callback=jQuery1234567890
```
其中 `jQuery1234567890` 是 jQuery 自动生成的全局回调函数的名称。
当服务端接收到这个请求时,会根据 `callback` 参数的值,将数据包裹在这个回调函数中返回给客户端。例如:
```javascript
jQuery1234567890({"name": "Tom", "age": 20});
```
当客户端接收到返回的数据时,jQuery 会自动调用这个全局回调函数,并将返回的数据作为参数传递给它,从而实现跨域请求数据的目的。
需要注意的是,JSONP 请求只支持 `GET` 方法,因为它是通过动态创建 `<script>` 标签的方式来实现的,而 `<script>` 标签只支持 `GET` 请求。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)