Blogger Information
Blog 145
fans 7
comment 7
visits 164666
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
03月02日作业:json和AJAX基本知识
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
Original
978 people have browsed it

作业一

一、Json相关知识
1、json是借用了JS对象字面量法来表示数据,是一种轻量级,用于数据交换与存储的格式化的字符串(本质上仍是一个字符串);
2、json数据类型:

  • 简单值:100,”hello”,true,null,没有undefined
  • 对象:{……}
  • 数组:[……]
  • 简单值字符串:必须且只能用双引号作为定界符;

3、json的两个方法:

  • 序列化:JS对象序列化为JSON格式的字符串JSON.stringify();
  • 解析:将JSON格式的字符串解析/还原为JS对象JSON.parse();

4、JSON与JS对象的区别:

  • 没有变量声明:JSON中没有变量的概念
  • 没有分号:以为JSON不是语句
  • JSON属性名必须加上双引号:任何时候任何地方都必须加双引号,且必须加双引号

5、JSON对象:这个对象不是JS预定义的,它是宿主环境定义的(浏览器)JSON.stringify(js);把JS对象序列化成JSON,JS对象序列化之后,会将以下三种成员删除:
(1)、方法(函数)
(2)、值为undefined的属性
(3)、继承的原型对象成员
6、JSON.stringify();有三个参数:第一个是被序列化的JS对象;第二个数组(限制序列化的属性成员)或者(回调函数可以对JSON的结果中的属性进一步处理,函数必须有return value;否则为空,不希望那个值出现可以让某个属性返回undefined);第三个参数设置json字符缩进(数字或者字符)
7、为了规范/自定义序列化的返回结果,允许在JS对象中创建一个方法:toJSON;toJSON在调用JSON.stringify()时自动调用,像魔术方法一样;
8、JSON.parse():有连个参数;第一个参数json字符串,第二个参数为回调函数(回调函数必须加上return value);
二、AJAX基础知识
1、同步和异步的概念:
同步:发出请求得到响应放回数据,才可以发送另一个
异步:发出请求,不需要得到响应回复就可以发出另一个请求,(回调函数);
2、XMLHttpRequest基本流程(两种形式):
(1)、请求的进本流程(GET)

  • a.创建请求对象:new XMLHttpRequest;
  • b.监听请求回调:readystatechange
  • c.设置请求参数:open(请求类型,请求url,是否异步)(默认true,异步)
  • d.发送请求:send(null)

(2)、请求的基本流程(POST)

  • a.创建请求对象:new XMLHttpRequest
  • b.监听请求回调:readystatechange
  • c.设置请求头:open(请求类型,请求url,是否异步):默认true,异步
  • d.设置请求头:setRequestHeader()
  • e.准备请求的数据:var data={……}
  • f.发送请求:send(‘user=’+data);可以添加键值对形式返回
    3、监听事件:readystatechange
    4、reponseText:返回ajax请求文本
    5、reponseXML:返回的html/xml;
    6、readyState===4:标识Ajax请求状态(4代表成功)
    7、status:返回数据(200代表OK)
    8、setRequestHeader('content-type','applicaton/x-www-form-urlencoded')表单数据形式
    setRequestHeader('content-type','applicaton/json;charset=utf-8')json数据形式
    9、setTimeout(函数、time) 方法用于在指定的毫秒数后调用函数或计算表达式。
    10、onsubmit="return false"禁用表单提交事件;

作业二

一、JSON和js对象之间转化练习
1、代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <script>
  9. var person = {
  10. name: 'peter zhu',
  11. age: 29,
  12. isMarried: true,
  13. course: {
  14. name: 'JavaScript',
  15. grade: 99
  16. },
  17. getName: function () {
  18. return this.name;
  19. },
  20. hoppy: undefined,
  21. // 继承的方法
  22. toString: function () {
  23. return '继承属性';
  24. }
  25. };
  26. console.log(person);
  27. personj=JSON.stringify(person,['name','age'],4);
  28. console.log(personj);
  29. person1=JSON.stringify(person,function(key,value){
  30. if(key==="age"){
  31. return "年龄是个秘密"
  32. }
  33. return value;
  34. },4);
  35. console.log(person1);
  36. var detail={
  37. name:"ldy",
  38. age:10,
  39. course:"php课程",
  40. toJSON:function(){
  41. return this.name+this.age+this.course;
  42. }
  43. };
  44. console.log(detail);
  45. console.log(JSON.stringify(detail));
  46. var jsonStr = '{"name":"peter zhu",\
  47. "age":29,\
  48. "isMarried":true,\
  49. "course":{"name":"JavaScript","grade":99}}';
  50. var job=JSON.parse(jsonStr);
  51. console.log(job);
  52. joba=JSON.parse(jsonStr,function(key,value){
  53. if(key==="isMarried"){
  54. return "这是什么?";
  55. }
  56. return value;
  57. });
  58. console.log(joba);
  59. </script>
  60. </body>
  61. </html>

2、演示结果:

二、请求基本流程(以GET为例):
1、代码部分:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>ajax</title>
  6. </head>
  7. <body>
  8. <script>
  9. var xhr=new XMLHttpRequest;
  10. xhr.onreadystatechange = function () {
  11. if (this.readyState === 4) {
  12. console.log(this.responseText)
  13. document.write(this.responseText)
  14. }
  15. };
  16. xhr.open('GET','../0228/demo3.html',true);
  17. xhr.send(null);
  18. </script>
  19. </body>
  20. </html>

2、运行结果图:

三、登陆表单验证实
1、代码(只有登陆页代码):

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <style>
  7. .error {
  8. color: red;
  9. }
  10. .success {
  11. color: green;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <!-- onsubmit="return false" 禁用表单调的默认功能 -->
  17. <form method="POST" onsubmit="return false" name="login">
  18. <fieldset>
  19. <legend>用户登录</legend>
  20. <p><label>邮箱: <input type="email" name="email" required></label></p>
  21. <p><label>密码: <input type="password" name="password" required></label></p>
  22. <p><button name="submit">提交</button><span id="tips"></span></p>
  23. </fieldset>
  24. </form>
  25. <script>
  26. var form=document.forms.namedItem('login');
  27. // console.log(form.submit);
  28. form.submit.addEventListener('click',check,false);
  29. function check(){
  30. var xhr=new XMLHttpRequest;
  31. xhr.addEventListener('readystatechange',response,false);
  32. xhr.open('POST','check.php',true);
  33. xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
  34. var user='email='+login.email.value+'&password='+login.password.value;
  35. // var data = JSON.stringify(user);
  36. xhr.send(user);
  37. // console.log(user);
  38. }
  39. function response(ev){
  40. if(ev.target.readyState===4){
  41. // console.log(ev.target.responseText);
  42. // console.log(user);
  43. var user = JSON.parse(ev.target.responseText);
  44. var tips = document.querySelector('#tips');
  45. switch (user.status) {
  46. // 验证失败
  47. case 0:
  48. tips.classList.add('error');
  49. tips.innerHTML = user.message + ',重新输入';
  50. login.email.focus();
  51. login.email.addEventListener('input', function () {
  52. tips.innerHTML = null;
  53. }, false);
  54. break;
  55. // 验证成功
  56. case 1:
  57. tips.classList.add('success');
  58. // 将用户的登录信息写入cookie
  59. document.cookie = 'email=' + login.email.value;
  60. tips.innerHTML = user.message + ',正在跳转中...';
  61. setTimeout('location.href="admin.php"', 2000);
  62. break;
  63. // 默认
  64. default:
  65. tips.innerHTML = '未定义错误';
  66. }
  67. }
  68. }
  69. </script>
  70. </body>
  71. </html>

2、运行效果图

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:完成的不错... JSON.stringify()有三个参数, 其实后二个, 极少被人提及, 但一旦掌握会很有用的
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post