ajax 跨域访问

本文介绍了一次实际项目中实现跨域请求的过程。采用JSONP方式完成从前端到后端的跨域数据交互,并展示了具体的前端请求及后端响应代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前一直只知道有跨域这一说,但并没有在项目中实战过。就在昨日有一个小需求就需要用到跨域。因此将实战的结果记录下。

跨域原理:ajax不能请求非当前服务之外的服务。


具体步骤


1:引入jquery


2:前端请求代码

$.ajax({
	type:"POST",
	dataType:"jsonp",
	cache:false,
	jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
	jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
	data:{"keyword":keyword,"entry":20},
	url:"http://21.179.197.101:84/tyjs/searchFirst2.do",
	success:function(resultData){
		alert(resultData);
	}
});




3:后端接收代码
说明
  1:参数callbackparam就是前端定义的参数名,这是约定的参数名哦
  2:然后通过参数名callbackparam获取到的值就是 前端定义的 jsonpCallback值
  3:后端响应数据格式: 参数名callbackparam的值(要响应的数据格式,也就是前端要接收的数据格式)
  4:后端响应格式就要设置为text/plain非json了哦。前端可以写json,会自动转换

  @ResponseBody
  @RequestMapping("/searchFirst2")
  public void searchFirst2(String callbackparam, SearchView sv, Paging<Info> paging,
      HttpServletResponse resp) throws ServletException, IOException {
    resp.setContentType("text/plain;charset=utf-8");
    String keyword = sensitiveWordUtlis.filterInfo2(sv.getKeyword());
    sv.setKeyword(keyword);
    if (StringUtils.isNotEmpty(keyword)) {
      searchService.count(sv.getKeyword());
      try {
        searchService.searchFirst(paging, sv);
      } catch (Exception e) {
        logger.error(e);
      }
    }
    String jsonData = JsonMyUtil.object2json(paging);
    jsonData = String.format("%s(%s)", callbackparam, jsonData);
    resp.getWriter().print(jsonData);
    resp.flushBuffer();
  }


参考前辈的经验(里边有介绍到原理)

http://www.cnblogs.com/know/archive/2011/10/09/2204005.html



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值