关键词

jsonp跨域请求实现示例

下面给出“jsonp跨域请求实现示例”的完整攻略,逐步讲解其实现过程。

什么是跨域请求?

跨域请求是指在前端页面中,通过JavaScript代码向不同域名、不同端口、不同协议的服务器发送HTTP请求。由于浏览器的同源策略,如果不加特殊处理,则这种跨域请求是不被浏览器允许的。

JSONP实现跨域请求的原理

JSONP(JSON with Padding)实际上是利用

```

  1. 在客户端JavaScript代码中定义相应的回调函数,用于接收服务器返回的数据:

javascript
function handleData(data) {
console.log(data);
}

  1. 服务器接收到客户端的请求后,将需要返回的数据放到回调函数的形参中,并将整个JavaScript代码作为响应返回给客户端:

```php

```

  1. 客户端接收到服务器返回的JavaScript代码后,立即执行该代码,进而触发回调函数并获取所需数据。

示例一:获取天气数据

下面给出一个示例,通过JSONP实现在百度网站上获取指定城市的天气数据。

  1. 在百度网站首页HTML代码中添加一个

    ```

    1. 在客户端JavaScript代码中定义相应的回调函数,用于接收服务器返回的天气数据:

    javascript
    function getWeather(data) {
    console.log(data);
    // 解析天气数据并对页面进行更新
    }

    1. 服务器接收到客户端的请求后,查询获取对应城市的天气数据,并将天气数据放到回调函数的形参中,最终将整个JavaScript代码作为响应返回给客户端:

    ```php

    ```

    1. 客户端接收到服务器返回的JavaScript代码后,触发回调函数并获取所需数据,从而对页面进行更新。

    示例二:实现跨域调用百度地图API

    下面给出一个示例,通过JSONP实现在本地网站上调用百度地图API。假设我的网站域名为www.example.com,需要获取北京的坐标数据。

    1. 在www.example.com网站的HTML代码中添加一个

      ```

      其中,xxxxxx需要替换为申请的百度地图开发者AK。

      1. 在客户端JavaScript代码中定义相应的回调函数,用于接收服务器返回的坐标数据:

      javascript
      function getCoordinate() {
      // 调用百度地图API获取北京的坐标数据
      var geoc = new BMap.Geocoder();
      geoc.getPoint("北京市", function(point) {
      // 处理坐标数据并对页面进行更新
      console.log(point.lng + ", " + point.lat);
      }, "北京市");
      }

      1. 服务器接收到客户端的请求后,调用相关的百度地图API获取所需数据,并将数据放到回调函数的形参中,最终将整个JavaScript代码作为响应返回给客户端:

      javascript
      getCoordinate({
      "status": 0,
      "result": {
      "location": {
      "lng": 116.405285,
      "lat": 39.904989
      }
      }
      });

      1. 客户端接收到服务器返回的JavaScript代码后,触发回调函数并获取所需数据,从而对页面进行更新。

      至此,两个示例都用到了JSONP实现了跨域请求,其中第一个示例是客户端通过JSONP获取天气数据并对页面进行更新,第二个示例是客户端通过JSONP调用百度地图API获取北京的坐标数据并对页面进行更新。

      本文链接:http://task.lmcjl.com/news/11510.html

      展开阅读全文