jQuery还提供了两个非常实用的方法,分别是$.getScript()以及$.getJSON()。这个两个方法非常之重要,假设我们现在要编写一个框架,如果能在后台控制前台表格的动作,我们应该怎么做?肯定是要在后台向前台发送一个JavaScript,从而让前台的JavaScript执行,当然有很多方法,比如创建一个Script的节点放在DOM树中,或者是在HTML中增加一个<script>节点,都是解决这个问题的方法。但是getScript也不失是解决这个问题的一个很好地方案。
此外,现在JSON由于书写简便,传输数据比较小,数据冗余度好,而慢慢的大有取代XML的形式。Google也提供了很多第三方的可靠的json转换的解决方案。所以json的威力还是不能小瞧的。
使用jQuery的这两个方案,有几个要注意的点:这两个方法
$.getScript()以及$.getJSON()都有两个参数,第一个参数是提供给jQuery向什么地址寻求资源,第二个就是资源返回之后,会提供什么样子的函数来调用上面的资源,第一个回调函数是用来执行上面的JavaScript方法中的函数,第二个回调函数则是用来解析刚刚获取的JSON的字符串。此外,JSON的格式是这样的{"name1":"value1",
"name2":"value2"
},请注意里面的不是单引号,而是双引号,如果写成引号,可能会导致jquery无法解析上面的JSON字符串。最后,如何解析JSON?data['name1']以及使用$.each(data,function(idx,item){})来进行解析,要根据JSON的格式不同选择正确的解析方式。
前端的DEMO代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript">
$(function(){
$("#getContent").click(function(){
$.getScript("czz.js",function(){
alertHtml($("#showText"));
})
});
$("#getJson").click(function(){
$.getJSON("test?name=czz&address=dszy",function(data){
var str = data['name']+" "+data['address'];
$("#showText").empty().text(str);
});
});
});
</script>
</head>
<body>
<div id="showText"><span>He who hesitates is lost.</span></div>
<input type="button" id="getContent" value="getAjax">
<input type="button" id="getJson" value="getJson">
</body>
</html>
后端的DEMO代码如下:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name = req.getParameter("name");
String address = req.getParameter("address");
StringBuffer sb = new StringBuffer("");
sb.append("{\"name\":\"")
.append(name)
.append("_czz\",\"address\":\"")
.append(address)
.append("_czz\"}");
resp.setContentType("html/JSON;charset=utf-8");
resp.getWriter().print(sb.toString());
}
程序中调用的JS代码如下:
function alertHtml(e){
alert(e.html());
}