jquery Ajax 通过jsonp的方式跨域提交表单

Jquery Ajax可以通过jsonp的方式跨域提交表单,至于什么是跨域提交简单说就是你的客户端和服务端不在同一个域名下或端口号不同也可以叫做跨域。

前台代码:

$.ajax({
             type : 'get',
             async: false,
             url : '${pageContext.request.contextPath}/clue/uploadForm',
             dataType : 'jsonp',
             data: {
                         mydata : JSON.stringify(obj,fm),
                         formId : formId
                     },
             jsonp: 'callbackparam',
             jsonpCallback:'success_jsonpCallback',
             success : function(json){
                 //alert(json.message);
                 result = json.message;
             },
              error : function(json,XMLResponse){
                  //alert(XMLResponse.responseText+XMLHttpRequest.status);
                  result = "返回信息:" + json.message + "错误码:" + XMLHttpRequest.status;
             }
        });


后台代码:

/**
     * 提交form表单数据
     * @param request
     * @param session
     * @return
     * @throws IOException 
     */
    @RequestMapping(value ="uploadForm")
    public void uploadForm(HttpServletRequest request, HttpServletResponse response,HttpSession session) throws IOException{
        Map<String,Object> dataMap = new HashMap<String,Object>();
     dataMap.put("message","success");   String callbackparam
= request.getParameter("callbackparam"); response.setCharacterEncoding("utf-8"); JSONObject json = JSONObject.fromObject(dataMap); System.out.println(callbackparam+"("+ json.toString() + ")"); response.getWriter().print(callbackparam+"("+ json.toString() + ")"); }

注意:
1.通过jsonp方式跨域返回值不能为数据,其实为一段js代码,所以如果是springmvc,不能使用@ResponseBody注解。

2.返回值中要按照jsonp的格式,即callbackparam值加上“()”,括号中为json字符串

3.前台代码中,jsonp属性中callbackparam为回调函数名称变量名,jsonpCallback属性为回调函数名称的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值