使用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>