AJax技术

JavaScript学习总结之JS、AJAX应用(5)

字号+ 作者:H5之家 来源:H5之家 2016-02-06 15:02 我要评论( )

我们要从服务器读取 demo.txt 这个文件,目的是为了获取这个文件中的内容,那么如何获取返回的结果呢?当成功的读取信息后,要调用 fnSucc 这个参数,也就是成功后执行的回调函数,他其实是有一个参数的 str,这个

  我们要从服务器读取 demo.txt 这个文件,目的是为了获取这个文件中的内容,那么如何获取返回的结果呢?当成功的读取信息后,要调用 fnSucc 这个参数,也就是成功后执行的回调函数,他其实是有一个参数的 str,这个参数可以自定义,str 的作用就是把服务器返回给我们的内容传入进来,这个 str 参数就是 fnSucc(oAjax.responseText) 中传过来的。

  当失败的时候,调用 fnFaild 这个参数,也就是失败后执行的回调函数。那么这个失败时调用函数也是有一个参数的,fnFaild(oAjax.status),为了方便调试,我们也可以给他传入一个参数进来,用来提示请求失败的结果。在真正的网站中,当 AJAX 请求失败时,也不可能弹一个 alert,这样不太友好,所以可以自定义一些更加友好的方式来提示用户。这里建议大家平时在调试 AJAX 程序时,一定要加上失败时执行的回调函数,否则如果失败的话,那么可能没有任何反应。

  9、AJAX 应用

  请求一个静态的 TXT 文件,在了解了 AJAX 的原理后,很容易的就可以做到,但是在真正的网站中,这样不会有太大的实际用途,前边我们说 AJAX 是一种与服务器交换数据并更新部分网页的艺术,那么既然称之为艺术,因此我们需要使用 AJAX 去请求一些更实用、更复杂的东西,这样才能完美的体现他存在的价值。比如说我们可以去请求动态数据,例如去请求一个装着数据的 JSON 文件。

  (1)、读取数组

  首先,新建一个 TXT 文件命名为 arr.txt,随意存一个数组,比如[1,2,3,4,5,6],放在之前的 ajax 文件夹下,然后就可以开始编写程序了。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-">

<title>AJAX 读取数组</title>

<script src="js/ajax.js"></script>

<script>

window.onload = function (){

var oBtn = document.getElementById('btn');

oBtn.onclick = function (){

ajax('ajax/arr.txt?t=' + new Date().getTime(), function (str){

// str 是服务器返回的内容,弹出来看一下

//alert(str); 返回:[,,,,,]

// 那么再弹出内容的长度

//alert(str.length); // 返回:

// 返回对象的类型:string

//alert(typeof str);

// eval() 函数用于把字符串转换为 JS 代码执行

//alert(eval(str)); // 返回:,,,,,

// 现在可以返回内容的长度

//alert(eval(str).length); // 返回:

// 可以把这个函数保存为变量,查看每项的值

var arr = eval(str);

alert(arr[]); // 返回:

}, function (){

alert('失败');

});

};

};

</script>

</head>

<body>

<button type="button" id="btn">读取</button>

</body>

</html>

  上面的实例中,str 是服务器返回给我们的内容,弹出来之后,是我们定义的数组,没有问题,那么弹出数组的长度,却返回 13,数组的长度本应该是 6 啊,怎么会是 13 呢,我们再弹出这个对象的类型,结果返回 string,尽管他长的很像数组,但他确实是一个字符串,这是为什么呢?其实通过 AJAX 的方式读取的任何对象都是以字符串形式存在的,那么这个字符串的长度就应该是13,方括号加上标点。如果要把一个字符串中存的数组提取出来,就要使用 eval(string) 函数,该函数可计算某个字符串,并把他作为 JavaScript 代码来执行,也就是可以把一个语句中的内容解析为 JS 可以识别的语句,该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。那么使用该方法之后再次返回数组的内容和长度,就没有问题了。我们也可以把这个函数保存在一个变量中,来查看每项的值。虽然 eval() 的功能非常强大,但在实际使用中用到他的情况并不多。

  (2)、读取 JSON 数据

  首先,还是需要新建一个 JSON 文件,可以命名为 json.json,可以随意存入一个数组对象,比如[{a:9, b:6, c:15}, {a:5, b:7, c:12}],然后放在 ajax 文件夹下,最后开始编写程序。

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-">

<title>AJAX 读取数组</title>

<script src="js/ajax.js"></script>

<script>

window.onload = function (){

var oBtn = document.getElementById('btn');

oBtn.onclick = function (){

ajax('ajax/arr.txt?t=' + new Date().getTime(), function (str){

// str 是服务器返回的内容,弹出来看一下

//alert(str); 返回:[,,,,,]

// 那么再弹出内容的长度

//alert(str.length); // 返回:

// 返回对象的类型:string

//alert(typeof str);

// eval() 函数用于把字符串转换为 JS 代码执行

//alert(eval(str)); // 返回:,,,,,

// 现在可以返回内容的长度

//alert(eval(str).length); // 返回:

// 可以把这个函数保存为变量,查看每项的值

var arr = eval(str);

alert(arr[]); // 返回:

}, function (){

alert('失败');

});

};

};

</script>

</head>

<body>

<button type="button" id="btn">读取</button>

</body>

</html>

  上面的实例,使用 eval() 函数解析出来之后,还是一个数组,返回数组的第0个元素,也就是{a:9, b:6, c:15},他还是一个 JSON 数据,所以返回 obj,那么再返回第0个元素中 a 的值,可以看到,使用方法和读取数组的方法是一样的。那如果 JSON 中保存的数据更复杂一些,比如是一组用户信息,要如何去读取,然后并以列表形式显示在网页中呢?

  下面是 JSON 用户信息数据,可以复制替换一下,这里在保存 JSON 时需要注意编码格式,一旦文件中出现中文了,就必须保存为 UTF-8 的格式,为了方便区分,我们可以把这个文件命名为 date.json 。

 

[

{

"user": "小白",

"sex": "男",

"age": 

},

{

"user": "初夏",

"sex": "女",

"age": 

},

{

"user": "小明",

"sex": "男",

"age": 

},

{

"user": "静静",

"sex": "女",

"age": 

}

]

  (3)、创建 DOM 元素显示 JSON 数据

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-">

<title>AJAX 读取JSON</title>

<script src="js/ajax.js"></script>

<script>

window.onload = function (){

var oBtn = document.getElementById('btn');

var oUl = document.getElementById('u');

oBtn.onclick = function (){

ajax('ajax/date.json?t=' + new Date().getTime(), function (str){

var arr = eval(str);

//循环遍历返回的对象

for(var i=; i<arr.length; i++){

//每次循环的时候创建一个li元素

var oLi = document.createElement('li');

//向li元素插入内容

oLi.innerHTML = '姓名:<strong>' + arr[i].user + '</strong> 性别:<span>' + arr[i].sex + '</span> 年龄:<span>' + arr[i].age + '</span>';

//将创建好的li元素插入到ul中

oUl.appendChild(oLi);

}

  },function (){

  alert('失败');

});

};

};

</script>

</head>

<body>

<input id="btn" type="button" name="user" value="读取">

<!-- 点击按钮生成json数据列表 -->

<ul id="u">

<!-- <li>姓名:<strong>小白</strong> 性别:<span>男</span> 年龄:<span></span></li> -->

</ul>

</body>

</html>

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Ajax学习之什么是Ajax,Ajax原理

    Ajax学习之什么是Ajax,Ajax原理

    2016-01-25 18:01

  • 学习JavaScript设计模式之代理模式

    学习JavaScript设计模式之代理模式

    2016-01-25 17:02

  • javascript、jquery、AJAX总结

    javascript、jquery、AJAX总结

    2016-01-25 17:00

  • ajax学习笔记(二)

    ajax学习笔记(二)

    2016-01-25 15:04

网友点评
a