AJAX跨域请求问题 ---- 工作笔记

这两天项目中有AJAX跨域请求的需求,于是查找相关资料,多数说是通过JSONP来实现,JSONP是什么?问问谷哥!

我的环境是 Jquery + Struts2

$.getJSON("http://somewebsite?keyword="+word+"&callback=?",
   //回调函数 
   function(json) {handleResponse(parent, json);})

//@param  keyword   想Action传的所要用的参数.              

   callback     回调函数参数, 后面可以是"?", 当是"?"时,参数值由Jquery自动生成; 也可指定为某回调函数名
 

 

Struts2  Action中的代码:

 

 

public String method(){
//获取回调函数的函数名
String callback = ServletActionContext.getRequest().getParameter("callback");
if(keyword!=null &&!keyword.equals(""))
{
     //通过传过来的keyword参数,检索数据库  返回List
     keys = keyService.getKeyWords(keyword);
     //将List转换为JSON数组形式
     JSONArray kes = JSONArray.fromObject(keys);
		    try {
     //解决中文乱码问题
				HttpServletResponse response= ServletActionContext.getResponse();
				response.setContentType("text/html;charset=utf-8"); 
				response.setHeader("Cache-Control", "no-cache");
     //输出格式需为callback(即获取到的回调函数名)+(传回页面的内容)
		    	response.getWriter().print(callback +"("+ kes.toString()+")");
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}

    具体的原理去网上搜索一下看看!  刚刚测试通过 , 可实现!  

 

    进阶资料:https://www.ibm.com/developerworks/cn/web/wa-aj-jsonp2/

                 https://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/

    Ps: 好神奇!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值