最近在项目中面临 ajax 跨域请求问题。
和同事讨论半天,网上查贴一二,附上解决方案
?
?
<script> $(document).ready( function(){ $("#testBtn").bind("click",loginFun); //$("#loginBtn").bind("click",loginFun); //$("#setLoginBtn").bind("click",setLoginPas); } ) function loginFun(){ alert(111) $.ajax({ type:'get', url:'http://127.0.0.1:8080/ttc/twoDimensionalCodeAction/testAjaxCrossDomain.htm', beforeSend: function(XMLHttpRequest) { }, data:"lokey=7758521", dataType:'jsonp', jsonp: 'jsoncallback', success:function(data){ alert(data.keyAlive); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } }) } </script>
?
服务器端代码:
?
public void testAjaxCrossDomain(HttpServletRequest request, HttpServletResponse response) throws Exception{ System.out.println("接收跨域请求"); String loKey = RequestGetString.getString(request, "lokey"); System.out.println("loKey:"+loKey); String jsoncallback = RequestGetString.getString(request, "jsoncallback"); PrintWriter out = null; out = response.getWriter(); JSONObject json = new JSONObject(); Random rand = new Random(); int i = rand.nextInt(100); StringBuffer abc = new StringBuffer("0123456789"); for(int j = 0;j<100000;j++){ abc.append("0123456789").append("-").append(j).append("-").append("\n"); } json.put("keyAlive", Integer.toString(i)+" "+loKey+" "+abc.toString()); out.print(jsoncallback+"("+json+")"); }