Ajax跨域请求

原文出自搬砖工,需要转载请注明出处


一、什么是跨域请求

域名http://www.baidu:8080/script/jquery.js,它由http://(协议)、www(子域名)、baidu(主域名)以及8080(端口号)组成,当另一个域名与其中任意一项对应不等的话,那么我们说两个域名就是跨域的。
如http://www.baidu:8080的页面上我们要请求数据到http://www.sohu:8080上去,那么就说这种请求是跨域请求。

二、为什么要讲跨域请求
因为在一般的请求条件下,我们的请求都是访问到原有服务。当服务有分开的时候,就必然会使用跨域请求。如果用原有的请求方式去请求跨域域名,请求是不能成功发送到后台。因此,对于ajax跨域请求有独特的方法使用。

三、json和jsonp
web开发很多时候都会用到json数据,那jsonp是干嘛的?jsonp是ajax提供的一种跨域请求实现的方式。首先我们看一下json和jsonp的数据格式
json
{
    "message":"获取成功",
    "state":"1",
    "result":{"name":"工作组1","id":1,"description":"11"}
}
jsonp
callback({
    "message":"获取成功",
    "state":"1",
    "result":{"name":"工作组1","id":1,"description":"11"}
})
大家发现,jsonp其实就是callback(json)。

四、如何使用jsonp进行跨域访问
例:
页面js请求
$(document).ready(function(){
var url='http://localhost:8080/WorkGroupManagment/open/getGroupById"
   +"?id=1&callback=?';
$.ajax({
 url:url,
 dataType:'jsonp',
 processData: false, 
 type:'get',
 success:function(data){
   alert(data.name);
 },
 error:function(XMLHttpRequest, textStatus, errorThrown) {
   alert(XMLHttpRequest.status);
   alert(XMLHttpRequest.readyState);
   alert(textStatus);
 }});
});

后台接收数据
@RequestMapping(value = "/getGroupById")
public String getGroupById(@RequestParam("id") Long id,
  HttpServletRequest request, HttpServletResponse response)
  throws IOException {
	String callback = request.getParameter("callback");
	ReturnObject result = null;
	Group group = null;
	try {
	  group = groupService.getGroupById(id);
	  result = new ReturnObject(group, "获取成功", Constants.RESULT_SUCCESS);
	} catch (BusinessException e) {
	  e.printStackTrace();
	  result = new ReturnObject(group, "获取失败", Constants.RESULT_FAILED);
	}
	String json = JsonConverter.bean2Json(result);
	response.setContentType("text/html");
	response.setCharacterEncoding("utf-8");
	PrintWriter out = response.getWriter();
	out.print(callback + "(" + json + ")");
	return null;
}
这样,就可以达到跨域请求的目的了,这里注意的是。因为我们ajax里面请求的数据格式是jsonp,那么返回的数据格式就是callback(json),如果直接返回json会报转换类型失败。

五、jQuery插件-jquery-jsonp
jQuery还提供了专门用于跨域请求的方法:
var url="http://localhost:8080/WorkGroupManagment/open/getGroupById"
    +"?id=1&callback=?";
$.jsonp({
  "url": url,
  "success": function(data) {
    $("#current-group").text("当前工作组:"+data.result.name);
  },
  "error": function(d,msg) {
    alert("Could not find user "+msg);
  }
});

ps:代码来源于网络
数据集介绍:道路安全物体检测数据集数据集名称:道路安全物体检测数据集图片数量:- 训练集:5,230张图片- 验证集:1,494张图片- 测试集:749张图片- 总计:7,473张图片分类类别:- Animal(动物):道路上的动物,可能影响交通安全或监控场景。- Bike(自行车):交通参与者,用于识别骑行物体。- Bump(减速带):道路设施,用于检测减速区。- Car(汽车):主要交通工具,支持车辆识别任务。- Carstop(停车标志):车辆停止状态或交通标志,适用于行为分析。- Colorcone(彩色锥筒):道路施工或标记物体,用于安全区划分。- Hole(坑洞):道路缺陷,支持路面风险评估。- Person(行人):交通参与者,用于行人检测和监控。标注格式:- YOLO格式,包含边界框和类别标签,适用于目标检测任务。- 数据格式为图像文件,来源于实际场景采集。自动驾驶系统开发:数据集支持目标检测任务,帮助构建AI模型以识别道路物体(如汽车、行人、减速带),提升自动驾驶车辆的环境感知能力。智能交通监控系统:集成至交通管理平台,实现实时检测道路异常(如坑洞、彩色锥筒),辅助交通流量分析和安全预警。道路安全评估工具:用于开发道路缺陷检测应用,自动识别减速带、坑洞等,支持基础设施维护和风险预防。安防与监控解决方案:适用于CCTV系统,检测行人、动物等物体,增强公共场所的安全监控效率。精准标注与多样性:- 标注基于YOLO格式,边界框定位准确,确保模型训练可靠性。- 覆盖8个道路安全相关类别,包括车辆、行人、障碍物等,场景多样,提升泛化能力。任务适配性强:- 标注兼容主流深度学习框架(如YOLO),可直接用于目标检测模型训练。- 支持从基础检测扩展到复杂任务,如交通行为分析或风险评估。实际应用价值高:- 数据来源于真实道路环境,适用于交通、城市管理和安全领。- 大样本量(7,473张图片)支持模型鲁棒性训练,助力AI解决方案落地。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值