ajax 跨域 同步,JSONP解决跨域及ajax同步问题

本文介绍了如何使用前端JavaScript的sendJSONP函数实现异步请求,并通过JSONP回调处理后端返回的数据,以`@RequestMapping`为例,展示了后端如何设置响应头和编写回调响应。方法部分详细讲解了Promise和Ajax的运用,以及在实际应用中的使用示例。
摘要由CSDN通过智能技术生成

1、前端js

1、参数定义:

var sendJSONP = function(url){

var settings = {

url:url,

type:"GET",//JSONP下只能GET

dataType:"jsonp",

async:false,//同步请求,在JSONP下无效

jsonp: "callback",//指定参数名

jsonpCallback: "jsonp",//指定回调函数名,参数名和回调函数名在url中会被拼接成..&callback=jsonp&..

headers: {'Content-Type': 'application/json;charset=utf-8'}

}

return promising_ajax(url,settings);

}

2、promise定义:

var promising_ajax = function(url, settings) {

settings = settings || {};

return new Promise(function(resolve, reject) {

settings.success = function(data, status, jqXHR) {

resolve(data);

};

settings.error = function(jqXHR, status, error) {

reject(wrap_ajax_error(jqXHR, status, error));

};

ajax(url, settings);

});

};

3、请求发送:

var ajax = function (url, settings) {

// like $.ajax, but ensure XSRF or Authorization header is set

if (typeof url === "object") {

// called with single argument: $.ajax({url: '...'})

settings = url;

url = settings.url;

delete settings.url;

}

return $.ajax(url, settings);

};

2、后端代码:

@RequestMapping(value="/openapi/add/{trainId}",method= RequestMethod.GET,produces = "application/json;charset=utf-8")

public void add(@PathVariable Integer trainId, String data, String callback, HttpServletResponse response) throws IOException {

response.setHeader("Content-type","application/json;charset=UTF-8");

response.getWriter().write(callback+"("+ JSON.toJSONString(obj)+")");

}

3、使用方法

service.sendJSONP(url).then(function(resdata){

if(resdata.result == 1){

}

})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值