(跨域)jquery.ajax提交请求并返回json数据

当我们在两个java项目之间互相调用接口时就会遇到跨域请求的问题,这次我开发系统 的注册功能后台实现是调用的用户管理中心的接口,前台通过$.ajax请求并处理返回的json数据,其中注意一点就是如果出现中文的时候最好是转码传输 到后台解码,要不然容易出现乱码问题。

前台jsp页面的代码

 

 

 

 

 

[javascript] view plain copy 在CODE上查看代码片
  1. <script type="text/javascript">  
  2.   
  3. $(document).ready(function(){  
  4.     $("#submitBtn").click(function(){  
  5.         var flag = validateForm();//数据校验  
  6.         if (flag > 0) {  
  7.             alert("您的注册信息填写不正确,请查看错误信息!");  
  8.             return false;  
  9.         }  
  10.         if(!$("#checkbox_agree").is(':checked')){  
  11.             alert("您还没有查看“用户使用协议”,请先下载查看!");  
  12.             return false;  
  13.         }  
  14.           
  15.         var url = "${url }";//获取请求地址,最好是从项目配置文件读取,容易维护  
  16.         var userName = encodeURI($("#name").val());  
  17.         var userPwd = $("#pwd").val();  
  18.         var emailFalg = $("#email").val();  
  19.         var fName = encodeURI($("#fullName").val());//中文转码,防止乱码  
  20.         var orgCodeFlag = $("#orgCode").val();  
  21.         var data = {name:userName,pwd:userPwd,email:emailFalg,orgCode:orgCodeFlag,fullName:fName};  
  22.         $.ajax({  
  23.             type : "get",  
  24.             async : false,  //同步请求  
  25.             url : url,  
  26.             data : data,  
  27.             dataType : "jsonp"//跨域请求需要使用jsonp  
  28.             contentType: "application/x-www-form-urlencoded; charset=utf-8",   
  29.             timeout:1000,   
  30.             success:function(json){  
  31.                 alert(json.messages); //请求成功前台给出提示  
  32.                 $("#pwd").attr("value","");  
  33.                 $("#pwdAffirm").attr("value","");  
  34.                 $("#orgCode").attr("value","");  
  35.                 window.location.href="${ctx}/item/getItem"//跳转  
  36.             },  
  37.             error: function() {  
  38.                         alert("注册失败,请稍后再试!");  
  39.                 alert(XMLHttpRequest.status);  
  40.                         alert(XMLHttpRequest.readyState);  
  41.                         alert(textStatus);  
  42.                     }  
  43.         });  
  44.           
  45.     });  
  46. });  
  47.   
  48. </script>  


注:后台java代码解码使用:

 

java.net.URLDecoder.decode(fullName,"utf-8");


总结:上面的跨域请求虽然能够完成注册功能,可以实现数据交换,如果是登录功能的话安全性能就差了一些,因为前台的js代码很容易被修改,那是不是还有别的办法既能解决安全问题还能跨域请求交换数据呢?答案是必须的,下一篇博客将介绍安全跨域请求。

你可能感兴趣的:(jquery)