关键:ajax的dataType为jsonp,并且在请求的url中加上"?jsoncallback=?"

前台代码:

Html代码  jquery跨域Ajax请求_jsonp 跨域访问

  1. <script type="text/javascript" src="jquery-1.7.2.min.js"></script>   

  2. <script type="text/javascript">  

  3.     function RegisterRequest2() {  

  4.         /* getJSON method is ok also...   

  5.         $.getJSON("http://192.168.1.154:7087/ClusterServer/Rigister?jsoncallback=?", { pwd: '123', username: 'tl' }, function(json) { alert(json.name); });   

  6.         */  

  7.            

  8.         $.ajax({  

  9.             url: "http://192.168.1.154:7087/ClusterServer/Rigister?jsoncallback=?",  

  10.             type: "GET",  

  11.             data: { pwd: '123', username: 'tl' },  

  12.             dataType: "jsonp",  

  13.             success: function(data) {  

  14.                 alert(data.name);  

  15.             },  

  16.             error: function(a, b, c) {  

  17.                 alert("error==" + b);  

  18.             }  

  19.   

  20.         });   

  21.     }    

  22. </script>  

  23. <input type="button" onclick="RegisterRequest2();"  value="StartRequest" />  

 

后台Servlet代码:

Java代码  jquery跨域Ajax请求_jsonp 跨域访问

  1. import java.io.IOException;  

  2.   

  3. import javax.servlet.ServletException;  

  4. import javax.servlet.http.HttpServlet;  

  5. import javax.servlet.http.HttpServletRequest;  

  6. import javax.servlet.http.HttpServletResponse;  

  7.   

  8. public class Rigister extends HttpServlet {  

  9.   

  10.     @Override  

  11.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  

  12.             throws ServletException, IOException {   

  13.         String pwd = req.getParameter("pwd");  

  14.         String username =req.getParameter("username");  

  15.         System.out.println("get=="+username+"  ==="+pwd);  

  16.            

  17.         String callback = req.getParameter("jsoncallback");   

  18.         resp.getWriter().write(callback + "({name:'tzy',phone:'123'})"); //参数为json格式  

  19.     }  

  20.   

  21.     @Override  

  22.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)  

  23.             throws ServletException, IOException {   

  24.         String pwd = req.getParameter("pwd");  

  25.         String username =req.getParameter("username");  

  26.         System.out.println("post=="+username+"  ==="+pwd);  

  27.            

  28.         String callback = req.getParameter("jsoncallback");   

  29.         resp.getWriter().write(callback + "({name:'tzy',phone:'123'})");   

  30.     }  

  31.   

  32. }  

 

后台返回前台的时候取出jsoncallback回调函数名,将json格式的数据作为函数的参数,整个以字符串的形式返回给前台。。