首页 > 代码库 > ajax数据交互
ajax数据交互
明天要去新公司报道,心里好忐忑,不知道新公司的生活会如何,不知道自己能不能胜任新工作,抓紧今天的半天时间,认真整理一下自己写过的代码,和大家分享
使用ajax动态生成表格,和通过ajax传递参数,跳转至详情页展示详细信息
index.html页面
首先页面引入jquery-1.8.3.min.js,
页面代码:
<body>
<div>
<table>
<thead>
<tr>
<th>编号</th>
<th>姓名</th>
<th>班级</th>
<th>科目</th>
<th>成绩</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</body>
页面样式:
<style>
div{
width:600px;
margin:100px auto 0;
}
tr th {
width:150px;
height:50px;
background: gray;
text-align: center;
}
tr td {
width:150px;
height:50px;
background: #D3D3D3;
text-align: center;
}
</style>
json数据:列表页面数据 list.json 存在data文件夹下
{
"grades" :{
"stu0" :["0","haha","1","语文","30"],
"stu1" :["1","zhangsan","1","语文","80"],
"stu2" :["2","lisi","2","语文","30"],
"stu3" :["3","wangwu","2","语文","20"],
"stu4" :["4","zhaoliu","2","语文","50"],
"stu5" :["5","tianqi","2","语文","50"]
}
}
ajax代码:
$(function(){
$.get(
data/list.json,//请求数据的地址
function(data){//data为请求成功后返回的数据
var html = "";
for(var key in data.grades){//要列出对象的所有属性,由于不知道返回的对象有多少个属性,所以使用for in 循环用key来接收对象的每一个属性stu0---stu5
var val = data.grades[key];//拿出每一个属性对应的值,注:只能使用[]不能使用 . val是一个保存了每一个属性值(数组)
html += ‘<tr><td class="btn">‘ + val[0] + ‘</td><td>‘
+ val[1] + ‘</td><td>‘
+ val[2] + ‘</td><td>‘
+ val[3] + ‘</td><td>‘
+ val[4] + ‘</td></tr>‘;
}
$(‘tbody‘).append(html); //因为ajax是异步执行的,所以将对dom的处理要放在回调函数的最后一行,不能写在ajax外面
//点击编号(传递学生编号)跳转到详情页面(根据学生编号显示数据);因为表格是动态生成的,所以必须使用事件委托来实现点击事件
$("tbody tr").on("click", ‘.btn‘, function(){
window.location.href = http://www.mamicode.com/‘detail.html?id=‘ + this.textContent;//刚开始不知道怎么取点击的td对应的文本,使用了 console.dir(this);将this对象包括的所有属性打出来
});
} ,"json" );
})
详情页面的json数据:保存在data文件夹下的detail.json文件中
{
"grades" : {
"0": ["haha","1","30", "40"],
"1": ["zhangsan","1","80", "40"],
"2" :["lisi","2","30","90"],
"3": ["wangwu","2","20", "10"],
"4": ["zhaoliu","2","50", "50"],
"5": ["tianqi","2","50","40"]
}
}
详情页面:detail.html
<body>
<div>
<label>编号</label><span></span>
<label>姓名</label><span></span>
<label>班级</label><span></span>
<label>语文</label><span></span>
<label>数学</label><span></span>
</div>
</body>
样式:
<style>
div{
width:600px;
margin:100px auto 0;
border: 1px solid #D3D3D3;
}
label,span{text-align: left;height: 50px;display: inline-block;}
label{width: 300px; border-right: 1px solid #D3D3D3;}
</style>
js代码:
$(function(){
//获取传递过来的参数,即:获取?后面的字符串,使用split 传入 ?对window.location.href进行分割成数组,获取数组的第二项
var params = window.location.href.split("?")[1];//传来的数据如果是两个以上的话,传数据时用&进行拼接的,所以再分割一次用&符号
var dataList = params.split("&");//dataList为传来的所有数据等号连接的键值对字符串
for(var i = 0; i<dataList.length; i++){
var param= dataList[i].split("=")[0];
var value =http://www.mamicode.com/ dataList[i].split("=")[1];
if(param== "id"){
$.get(
"data/detail.json",
function(data){
for(var key in data.grades ){
if(key == value){
var sp = $("span");
sp.eq(0).html(key);
for(var i = 0; i < sp.length; i++){
sp.eq(i).html(data.grades[key][i-1]);
}
}
}
},json);
}
}
})
ajax数据交互