今天朋友问了我一个问题:在本地直接用浏览器打开写有$.ajax调用远程的一个请求,可以返回服务器响应的数据,但是用在项目里的时候,我们则直接用http://localshot范围则出现无响应!所以我猜是跨域问题,马上就去google搜索了一下jquery跨域的解决,是用$.getJSON这个方法,但是我测试了许久,还是不行,继续找,还是没能找到。于是沉下心来,自己想:现在就是我可以通过那个远程的方法在浏览器中打开,可以显示服务器返回来的数据,那么这个请求时成功响应的!如果在前端,我们是否能获得该数据呢,起初,我想到了iframe,但是iframe也不能跨域控制呀!所以只能想到服务器的控制了,所以下面贴出了解决的代码,分享出去

 

    1.写一个抓取远程页面的代码(我直接在jsp页面里写的了,方便)

      取名为js.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 
  2. <%@page import="java.net.URL"%> 
  3. <%@page import="java.net.HttpURLConnection"%> 
  4. <%@page import="java.io.BufferedReader"%> 
  5. <%@page import="java.io.InputStreamReader"%> 
  6. <
  7.    URL url = new URL("http://*.*.*.*/api.php?json=GetHouseDetail&houseid=1"); 
  8.     
  9.    HttpURLConnection hurl = (HttpURLConnection)url.openConnection(); 
  10.     
  11.    BufferedReader br = new BufferedReader(new InputStreamReader(hurl.getInputStream())); 
  12.    String json = ""
  13.    String str = br.readLine(); 
  14.     
  15.    while(str!=null){ 
  16.       json += str; 
  17.       str = br.readLine(); 
  18.    } 
  19.     
  20.    br.close(); 
  21.     
  22.    out.print("var str = "+json); 
  23.  
  24.  
  25. %> 

2.写一个处理前段处理页面

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
  3. <html> 
  4.   <head>     
  5.     <title>My JSP 'index.jsp' starting page</title>      
  6.   </head> 
  7.    
  8.   <body> 
  9.          <script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
  10.          <script type="text/javascript" src="js.jsp"></script> 
  11.          <script type="text/javascript"> 
  12.             $(document).ready(function(){              
  13.                 alert(str[0].buildingArea); 
  14.             }); 
  15.                         
  16.          </script> 
  17.   </body> 
  18. </html> 

3.通过http打开前段处理页面,打印出数据,处理成功


总结:

其实ajax也是给服务器发送一个请求然后服务器给客户端响应一个请求。

这种办法,也是给服务器发送一个请求,然后获得服务器端响应的数据。