一、JQuery与AngularJS
首先,先简单的了解一下JQuery与AngularJS。从源头上来说,两者都属于原生JS所封装成的库,两种为平行关系。
二、Ajax请求与数据遍历打印
这里是Ajax和$http请求的JSON文件概览,默认的路径我们就放在与两者同级的文件夹里。
[
{
"name": "一号",
"age": 17,
"hobby": [
"吃",
"喝"
],
"score":{
"math":78,
"chinese":89
}
},
{
"name": "二号",
"age": 17,
"hobby": [
"喝",
"玩"
],
"score":{
"math":78,
"chinese":89
}
},
{
"name": "三号",
"age": 17,
"hobby": [
"玩",
"乐"
],
"score":{
"math":78,
"chinese":89
}
},
{
"name": "四号",
"age": 17,
"hobby": [
"吃",
"喝",
"玩",
"乐"
],
"score":{
"math":78,
"chinese":89
}
}
]
下面是Ajax请求获取JSON文件的代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ajax</title>
<script language="JavaScript" src="js/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(function(){
$("button").click(function(){
$.ajax({
type:"post",
url:"http://localhost:8080/JSON/h51701.json",
dataType:"JSON",
success:function(data){
console.log(data)
}
});
})
</script>
</head>
<body>
<button>点击请求JSON文件</button>
<div></div>
</body>
</html>
如果想要直接遍历取出JSON文件中的各种值,则可以通过post和get,一般我们所用的是post,使用时,只需要吧$ajax这一部分换成以下代码。
$.post("http://localhost:8080/JSON/h51701.json",{},function(data){
for(var i = 0 ; i < data.length ; i++){
$("div").append("姓名:"+data[i].name+"<br />");
$("div").append("年龄:"+data[i].age+"<br />");
$("div").append("数学成绩:"+data[i].score.math+"<br />");
$("div").append("语文成绩:"+data[i].score.chinese+"<br />");
$("div").append("爱好:"+data[i].hobby.toString()+"<br /><br />");
}
},"json")
在这里,我们一般是采用循环遍历的方法一一取出。
三、$http请求与数据的提取
相较而言,$http的方法更简单粗暴,代码如下。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>$http</title>
</head>
<body ng-app="app" ng-controller="ctrl">
<pre>{{data}}</pre>
<table>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>喜好</th>
<th>数学成绩</th>
<th>语文成绩</th>
<th>总分</th>
</tr>
</thead>
<tr ng-repeat="item in data | orderBy:'score.chinese'">
<td ng-bind="item.name"></td>
<td ng-bind="item.age"></td>
<td ng-bind="item.hobby"></td>
<td ng-bind="item.score.chinese"></td>
<td ng-bind="item.score.math"></td>
<td ng-bind="item.score.chinese + item.score.math"></td>
</tr>
</table>
</body>
<script src="libs/angular.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
angular.module("app", [])
.controller("ctrl", function($scope,$http) {
//方法一
$http({
method: 'POST',
url: 'h51701.json'
}).then(function successCallback(response) {
// 请求成功执行代码
$scope.res = response;
}, function errorCallback(response) {
// 请求失败执行代码
alert("服务请求失败")
});
//方法二
$http.get("h51701.json").then(function successFunction(a){
$scope.res = a;
})
//方法三
$http.post("h51701.json",{/*传递的参数对象*/}).then(function successFunction(a){
$scope.data = a.data;//从返回的信息中取出需要的数据,为JSON对象(数组)
})
})
</script>
</html>
在请求方面,三种方法大致与ajax相同,但是在每一数据的提取方面,AngularJS所提供的ng-repeat提供了非常大的便利。
综上,两者相比较,还是AngularJS提取更方便。但是从现如今的更新上讲,JQuery中的ajax更加稳定。