客户端:

//ajax跨域调用的方法
	$.ajax({
		url:dustUrl+"/screenshot/getDevices.do",
		type: "get",
		async: false,
		dataType: "jsonp",
		jsonp: "callbackparam",
		jsonpCallback: "success_jsonpCallback",
		success: function(data) {
			var len=data.length;
			$.each(data,function(index,value){
				var deviceId=value.id;
				var deviceNum=value.deviceNum;
				var cameraIP=value.cameraIP;
				$.ajax({
					url:dustUrl+"/screenshot/getPresets.do",
					type:"get",
					async: false,
					data:{"deviceId":deviceId},
					dataType:"jsonp",
					jsonp: "callbackparam",
					jsonpCallback: "success_jsonpCallback",
					success:function(data){
						if(data.length>0){
							var presetIdStr=data[0].presetIds;
							if(presetIdStr!=""){
								setTimeout("openWindow('"+deviceNum+"','"+cameraIP+"','"+presetIdStr+"');",3000);
								//openWindow(deviceNum,cameraIP,presetIdStr);
							}
						}
					}
				});
			});
			setTimeout("closeWindow();",(len+1)*3000);

		}
	});

  服务器端:

    @RequestMapping("/getDevices")
    public void getDevices(HttpServletRequest req,HttpServletResponse res){
        List<Device> deviceList=commonService.getEntityList(Device.class, "and len(cameraIP)>0");
        String devices="";
        for (Device device : deviceList) {
            devices+="{\"id\":\""+device.getId()+"\",\"deviceNum\":\""+device.getDeviceNum()+"\",\"cameraIP\":\""+device.getCameraIP()+"\"},";
        }
        if(devices.length()>0)
            devices=devices.substring(0, devices.length()-1);
        res.setContentType("text/plain");
        String callbackFunName =req.getParameter("callbackparam");//得到js函数名称
        try {
            res.getWriter().write(callbackFunName + "(["+devices+"])"); //返回jsonp数据
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @RequestMapping("/getPresets")
    public void getPresets(HttpServletRequest req,HttpServletResponse res) {
        res.setContentType("text/plain");
        String callbackFunName =req.getParameter("callbackparam");//得到js函数名称
        String deviceId=req.getParameter("deviceId");
        String presetIds="";
        if(StringUtils.isNotBlank(deviceId)){
            List<Preset> presetList=commonService.getEntityList(Preset.class, "and deviceId='"+deviceId+"'","presetNum");
            for (Preset preset : presetList) {
                presetIds+=preset.getPresetNum()+",";
            }
        }
        if(StringUtils.isNotBlank(presetIds)){
            presetIds=presetIds.substring(0, presetIds.length()-1);
        }
        try {
            res.getWriter().write(callbackFunName + "([ {presetIds:\""+presetIds+"\"}])"); //返回jsonp数据
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

jquery ajax跨域调用的更多相关文章

  1. jquery Ajax跨域调用WebServices方法

    由于公司需要开发一个手机页面,想提供给同事直接在手机上可以查询SAP资料.数据需要使用js调用webserver来获取. 因为初次使用Jquery调用Webserver,所以期间并不顺利.测试调用We ...

  2. 以短链服务为例,探讨免AppKey、免认证、Ajax跨域调用新浪微博API

    新浪微博的API官方提供了很多种调用方式,支持编程的,归根结底就是两种: 1.基于Oauth协议,使用Open API.(http://open.weibo.com/wiki/%E6%8E%88%E6 ...

  3. AJAX跨域调用相关知识-CORS和JSONP(引)

    AJAX跨域调用相关知识-CORS和JSONP 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容. 但是我们项目开发过程中,经常 ...

  4. JQuery.Ajax + 跨域 (crossDomain) + POST + JSON + WCF RESTful, 5大陷阱和解决方案

    JQuery.Ajax + 跨域 (crossDomain) + POST + JSON + WCF RESTful, 5大陷阱和解决方案 最近在开发WSS RESTful服务的时候, 碰到了这些个纠 ...

  5. AJAX跨域调用ASP.NET MVC或者WebAPI服务

    关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案 作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP. ...

  6. js Ajax跨域调用JSON并赋值全局变量

    //跨域调用JSON <script type="text/javascript"> function _callback(obj) { alert(obj); } j ...

  7. jquery+ajax跨域请求webservice

    最近几天在学习webservice...在学习的时候便想到用ajax的方式去请求webservice.. 一直在测试..如果这个被请求的webservice和自己使用的是同一个端口号.则不用考虑那aj ...

  8. WeX5 - AJAX跨域调用相关知识-CORS和JSONP

    http://docs.wex5.com/ajax-cross-domain/ 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容 ...

  9. jQuery ajax跨域请求的解决方法

    在Ajax应用中,jQuery的Ajax请求是非常容易而且方便的,但是初学者经常会犯一个错误,那就是Ajax请求的url不是本地或者同一个服务器下面的URI,最后导致虽然请求200,但是不会返回任何数 ...

随机推荐

  1. 反射调用与Lambda表达式调用

    想调用一个方法很容易,直接代码调用就行,这人人都会.其次呢,还可以使用反射.不过通过反射调用的性能会远远低于直接调用——至少从绝对时间上来看的确是这样.虽然这是个众所周知的现象,我们还是来写个程序来验 ...

  2. Spring Boot 快速入门

    Spring Boot 快速入门 http://blog.csdn.net/xiaoyu411502/article/details/47864969 今天给大家介绍一下Spring Boot MVC ...

  3. OpenGL 加载位图(BMP)贴图

    GLuint Texture[1]; HBITMAP hBMP; BITMAP BMP; glGenTextures(1, &Texture[0]); hBMP = (HBITMAP)Load ...

  4. 【python】二进制、八进制、十六进制表示方法(3.0以上)

    2进制是以0b开头的: 例如: 0b11 则表示十进制的3 8进制是以0o开头的: 例如: 0o11则表示十进制的9 (与2.0版本有区别) 16进制是以0x开头的: 例如: 0x11则表示十进制的1 ...

  5. hadoop 常用配置项

    core-site.xml  name value  Description   fs.default.name hdfs://hadoopmaster:9000 定义HadoopMaster的URI ...

  6. MYSQL用户权限管理学习笔记

    MYSQL 用户管理 1.权限表 MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类: (1)       超级管理员用户(root),拥有全部权限 (2)       普通用户,由roo ...

  7. linux根据该文件夹的读取权限和权限运行差异

    假设你linux下使用ls.细心的你会发现居然夹有权限运行.例如: drwxrwxr-x 11 cl cl 4096  9 25 14:22 ./ drwxr-xr-x 49 cl cl 4096 1 ...

  8. 记Angular与Django REST框架的一次合作(2):前端组件化——Angular

    注:这是这个系列的第二部分,主要集中在Angular的使用方面.之前使用过AngularJS(Angular 1.x),混在Django的模板中使用,这些页面一般完全是结果展示页.在有Django表单 ...

  9. 使用Visual Studio Code和typescript 开发调试React Native项目

    关于React Native的详细介绍我就不叙述了,他是使用js构建原声app的开发框架.一次变异多平台运行,非常强大.但是个人不喜欢js的过于灵活(弱类型)的语法.强大的强类型语言Typescrip ...

  10. A、B两个线程交替打印1 -- 100

    方案一:import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.u ...