jsp代理实现ajax跨域调用获取数据

proxy.jsp代码如下:

<%@ page import="java.net.*,java.util.*,java.lang.*,java.io.*"%> <%@ page contentType="text/xml;charset=gb2312"%> <%  

//1.接收url参数 String url = null; StringBuffer params = new StringBuffer(); Enumeration enu = request.getParameterNames(); int total = 0; while (enu.hasMoreElements()) { String paramName = (String) enu.nextElement(); if (paramName.equals("url")) { url = request.getParameter(paramName); } else { if (total == 0) { params.append(paramName) .append("=") .append(URLEncoder.encode( request.getParameter(paramName), "UTF-8")); } else { params.append("&") .append(paramName) .append("=") .append(URLEncoder.encode( request.getParameter(paramName), "UTF-8")); } ++total; } }

//2.请求url获取数据 if (url != null) { // 使用GET方式向目的服务器发送请求 URL connect = new URL(url.toString()); URLConnection connection = connect.openConnection(); connection.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));//注意处理编码问题 String line; while ((line = reader.readLine()) != null) { out.println(line);//输出数据给ajax回调函数接收 } reader.close(); } %>

ajax.js代码如下:

/** * JavaScript Ajax Library * * * get调用方式 * Ajax.get( * url, * function(data){ * //处理返回数据后 * }); * * post调用方式 * Ajax.post( * url, * function(data){ * //处理返回数据后 * }); */ var AJAXPROXY = '/proxy.jsp?url=';//注意proxy.jsp路径 var Ajax = new Object(); Ajax.request = function(){ if(window.XMLHttpRequest) { var Ajax = new XMLHttpRequest(); }else if (window.ActiveXObject) { try { var Ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { var Ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!Ajax) { /*window.alert("不能创建XMLHttpRequest对象<SPAN class=hilite2>实例</SPAN>.");*/ return false; } return Ajax; }; Ajax.req = Ajax.request(); Ajax.Handle = function(callback){ Ajax.req.onreadystatechange=function(){ if(Ajax.req.readyState==4){ if(Ajax.req.status==200){ callback(Ajax.req.responseText); } } }; }; Ajax.get = function(url,callback){ url = AJAXPROXY+encodeURIComponent(url); Ajax.req.open('get',url,true); Ajax.req.send(null); Ajax.Handle(callback); }; Ajax.post = function(url,callback){ url = AJAXPROXY+encodeURIComponent(url); Ajax.req.open('post',url,true); Ajax.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;'); Ajax.req.send(null); Ajax.Handle(callback); }; /*字符串转换成json*/ function strToJson(str){ return eval('('+str+')'); };

test.js

//get请求 Ajax007.get( 'http://www.baidu.com', function(data){ //处理返回数据后 });

//post请求

Ajax007.post( 'http://www.baidu.com', function(data){ //处理返回数据后 });

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值