使用ajax请求数据时,可以先封装ajax
function querystring(obj) {
var str = "";
for (var arr in obj) {
str += arr + "=" + obj[arr] + "&";
}
return str.substring(0, str.length - 1);
}
function $ajax({
method = "get",
url,
data,
success,
error,
}) {
var xhr = null;
try {
xhr = new XMLHttpRequest();
} catch (error) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
if (method == "get" && data != null) {
url += "?" + querystring(data);
}
xhr.open(method, url, true);
if (method == "get") {
xhr.send();
} else {
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=utf-8");
xhr.send(querystring(data));
}
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
if (success) {
success(xhr.responseText);
}
} else {
if (error) {
error("error" + xhr.status);
}
}
}
}
}
请求的数据book.json
{
"data":[
{
"name":"first",
"desc":"1111111111111111"
},
{
"name":"second",
"desc":"222222222222222"
},
{
"name":"third",
"desc":"333333333333333"
}
]
}
两种方法将获取的数据显示在ul中
两种方式选取一种,另一种运行时删除
<body>
<button id="xiazai">下载数据</button>
<ul id="liebiao">
<!-- <li>
<h1>标题:</h1>
<p>简介:</p>
</li> -->
</ul>
<script src="ajax.js"></script>
<script>
window.onload = function() {
var button = document.getElementById("xiazai");
var ul = document.getElementById("liebiao");
/* 第一种方式 */
button.onclick = function() {
$ajax({
method: "get",
url: "data/book.json",
success: function(res) {
var str = ``;
var obj = JSON.parse(res);
var arr = obj.data;
for(var i = 0;i < arr.length;i ++) {
var lobj = arr[i];
str += `<li>
<h1>标题:${lobj.name}</h1>
<p>简介:${lobj.desc}</p>
</li>`;
}
ul.innerHTML = str;
},
error: function(mes) {
alert(error);
}
})
}
/* 第二种方式 */
button.onclick = function() {
ul.innerHTML = "";
$ajax({
method: "get",
url: "data/book.json",
success: function(res) {
var obj = JSON.parse(res);
var arr = obj.data;
for(var i = 0;i < arr.length;i ++) {
var h1 = document.createElement("h1");
var p = document.createElement("p");
var li = document.createElement("li");
h1.innerHTML = arr[i].name;
p.innerHTML = arr[i].desc;
li.appendChild(h1);
li.appendChild(p);
ul.appendChild(li);
}
},
error: function(error) {
alert(error)
}
})
}
/* 第二种结束 */
}
</script>
</body>