最近在项目中面临 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+")");
}