jsonp的使用

基础

JSONP的基本思想是,网页通过添加一个

当通过

使用jsonp的原因

在使用VUE的前端框架的时候,请求数据使用axios的情况下,axios不支持jsonp请求,这种情况下可以使用ajax请求,不过一般在vue中不使用jquery,所以采用jsonp来实现功能。

axios

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:

  1. 从浏览器中创建 XMLHttpRequest
  2. 从 node.js 发出 http 请求
  3. 支持 Promise API
  4. 拦截请求和响应
  5. 转换请求和响应数据
  6. 取消请求
  7. 自动转换JSON数据
  8. 客户端支持防止 CSRF/XSRF

jsonp 的安装

$ npm install jsonp

jsonp的使用

1. 引入jsonp

import Jsonp from 'jsonp';

2.jsonp的API

jsonp(url, opts, fn)

在这里插入图片描述

3. jsonp的使用

let url = 'https://*********';
// 请求的接口地址
/* this.queryParam是传递的参数 */
// { name: 'callback' } 是回掉参数,需要写
Jsonp(url + this.queryParam, { name: 'callback' }, (err, data) => {
		if (err) {
            throw (err);
         }
         console.log('data', data);
});

对数据参数的格式处理(处理为所需的格式)

arrToQueryString (arr) {
	arr.forEach((item, index) => {
		this.queryParam = this.queryParam + Object.keys(item).map(function (key) {
			let trueKey = 'keywords[' + index + '][' + key + ']';
				return ''.concat(encodeURIComponent(trueKey), '=').concat(encodeURIComponent(item[key])) + '&';
                }).join('');
            });
            return this.queryParam;
        },

总结

1.jsonp的数据格式有严格的标准,需要按照文档API来写
2. {name: ‘callback’}很重要,需要写上,即使为空也需要写
3. 附上GitHub 地址。
Jsonp文档 github

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中使用JSONP主要是通过使用跨域请求来获取JSON数据。JSONP(JSON with Padding)是一种跨域请求技术,它实际上是通过在页面中动态创建一个`<script>`标签来加载远程的JSON数据,并通过回调函数来处理返回的数据。 下面是一个简单的Java JSONP的示例代码: ```java import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; @Path("/jsonp") public class JSONPService { @GET @Path("/data") @Produces(MediaType.APPLICATION_JSON) public String getJSONPData(@QueryParam("callback") String callback) { // 构造要返回的JSON数据 String jsonData = "{\"name\":\"John\", \"age\":30}"; // 将返回的数据包装成JSONP格式 String jsonpData = callback + "(" + jsonData + ")"; return jsonpData; } } ``` 上面的代码使用了JAX-RS(Java API for RESTful Web Services)来创建一个简单的RESTful服务。通过访问`/jsonp/data?callback=callbackFunction`,可以获取到如下格式的JSONP数据: ``` callbackFunction({"name":"John", "age":30}) ``` 在前端页面中,可以使用类似下面的代码来处理返回的JSONP数据: ```javascript function callbackFunction(data) { // 处理返回的JSON数据 console.log(data.name); console.log(data.age); } var script = document.createElement('script'); script.src = 'http://example.com/jsonp/data?callback=callbackFunction'; document.body.appendChild(script); ``` 以上代码中,通过动态创建`<script>`标签,设置`src`属性为请求JSONP数据的URL,并指定回调函数名字为`callbackFunction`。当服务器返回数据时,会调用该回调函数来处理返回的数据。 需要注意的是,JSONP存在一些安全性问题,因为它允许在页面中执行任意的JavaScript代码。因此,在使用JSONP时需要谨慎处理返回的数据,以防止潜在的安全漏洞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值