JSONP解决跨域及ajax同步问题

一、前端jsjavascript

一、参数定义:
  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);
    }

二、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);
        });
    };

三、请求发送:
    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);
    };

二、后端代码:前端

@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)+")");
}

三、使用方法java

service.sendJSONP(url).then(function(resdata){
                                if(resdata.result == 1){

                                }
                            })

jquery ajax经常使用方法查询:http://www.365mini.com/page/jquery_ajax.htmjquery

相关文章
相关标签/搜索