为了账号安全,请及时绑定邮箱和手机立即绑定

学习、阅读笔记——jsonP&Ajax

标签:
JQuery

一、jsonP

jsonP,客户端浏览器不允许跨域访问,当服务器的协议、地址、端口号有一个不同时,即为跨域。jsonP是json Padding的缩写,Padding可理解为后缀或者是填充。jsonP的重要特殊是具有一个回调函数,回调函数是调用者调用被调用域服务的标记,callback运行在被调用域服务器上。jQuery支持jsonP,语法如下:

jQuery.getJSON("http://www.yourdomain.com/jsonp/ticker?symbol=IBM&callback=?", 			function(data) {			    alert("Symbol: " + data.symbol + ", Price: " + data.price);			});

?为回调函数名,默认为callback; 

还可以使用Ajax实现,语法如下:

$.ajax({          url:"http://localhost:20002/MyService.ashx?callback=?",             dataType:"jsonp",          jsonpCallback:"person",          success:function(data){              alert(data.name + " is a a" + data.sex);          }     });

《使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuery 快速构建强大的 mashup》还给出了servlet实现,如下:

	@Override        	protected void doGet(HttpServletRequest req, HttpServletResponse resp)         	  throws ServletException, IOException {        		String jsonData = getDataAsJson(req.getParameter("symbol"));        		String output = req.getParameter("callback") + "(" + jsonData + ");";        		resp.setContentType("text/javascript");        	                  		PrintWriter out = resp.getWriter();        		out.println(output);        		// prints: jsonp1232617941775({"symbol" : "IBM", "price" : "91.42"});        	}

另外两篇参考文章,分别是:

我的一篇博文《json接口格式实现》和《深入理解jsonP》,jsonP的缺点是存在安全问题(客户端执行回调)和执行失败无提示。

二、Ajax

Ajax即为异步的js和xml,由html、css、js、xml、xmlHtppRequest等组成,除XmlHttpRequest以外,其他技术都是已熟的web标准技术。Ajax的优点有:1.异动请求;2.局部刷新;3.按需取数;缺点有:破坏浏览器的回退按钮行为;2.使用js作为驱动引擎,需考虑js兼容性和debug等。

Ajax的三个优点可以让页面更加丰富,交互更加自由,用户体现更佳,jQuery通过$.ajax提供了丰富的ajax功能,$.ajax的常用参数有data、type、success、beforesend、url、async等等。

 $.ajax({		  		async: false,				url : '../dependence/queryPost.action',				success : function(result) {					var jobList = result.staffinfoVo.jobList;					if(jobList != null && $("option", post).length<1){						post.append('<option value="">-请选择-</option>');						$.each(jobList, function(i,item){ 							if(item.active=="Y"){								post.append('<option value="'+ item.jobCode +'">'+item.jobName+'</option>').val(val);							}						});					}				}			});


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
18
获赞与收藏
134

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消