AJAX JS DOM前后台交互 详细步骤手把手(图解)

时间:2024-12-12 20:15:24

前后台交互步骤

一、搭建后台

1.创建项目目录basepro

2.创建项目目录中的静态文件夹public

3.安装依赖

首先这样做会生成一个package.json的配置文件,并在里面增加相应的版本信息,以后运行程序时,安装依赖包可以直接 npm install xxx

其次,安装npm install express时项目目录会创建node_modules目录,并在该目录下多了所有依赖的包。

4. 创建作为项目的入口文件,用于创建应用程序对象

- 引入express

- 创建WEB服务器

- 监听8080端口

- 托管静态资源./public文件

- 创建get方式请求的路由,并查看参数和给予返回值

- 解析表单中的 url-encoded 格式的数据

- 创建post方式请求的路由,并查看参数和给予返回值

- 创建put方式请求的路由,并查看参数和给予返回值

- 创建delet方式请求的路由,并查看参数和给予返回值

5. 运行 

  1. //在当前目录下的终端中输入npm install express 安装
  2. //1.引入express
  3. var express = require('express');
  4. //2.创建web服务器,实例化
  5. var app = express();
  6. //3.设置端口
  7. app.listen(8080);
  8. /* 4.静态资源托管()将静态资源的
  9. 目录放入到参数中,不是必须只有这一个文件目录可以托管,
  10. 也不是只有这一个文件目录可以 */
  11. app.use(express.static('./public'));
  12. //5.在终端启动服务器node
  13. //6.给前台一个接口地址,因为前台发请求用的get,后台交互数据,也用的get
  14. //地址路径(字符串格式)
  15. //接收前台?方式传递的参数
  16. app.get('/getpar1',(req,res)=>{
  17. console.log(req.query)
  18. })
  19. //接收post方法的接口地址
  20. //接收之前,需要单独解析通过urlencoded传递的格式
  21. app.use(express.urlencoded({extended:false}))
  22. app.post('/ajaxpost',(req,res)=>{
  23. console.log(req.body)
  24. res.send('post方式返回值')
  25. })
  26. //接收put方法的接口地址
  27. app.put('/ajaxput',(req,res)=>{
  28. console.log(req.body);
  29. res.send('put方式返回值');
  30. })
  31. //接收delete方法的接口地址
  32. app.delete('/ajaxdel/:names',(req,res)=>{
  33. console.log(req.params);
  34. res.send('delete方法返回值')
  35. })

二、浏览器请求

方式

  1. <script>
  2. //1.创建xhr对象
  3. var xhr = new XMLHttpRequest();
  4. //4.原本接收数据,现在通过监听判断readyState的值,为4的时候收据就回来了
  5. xhr.onreadystatechange = function () {
  6. //()
  7. //判断readyState是4的时候才可以拿到后台的数据
  8. if (xhr.readyState == 4) {
  9. //判断返回内容成功,再接收数据
  10. if (xhr.status >= 200 && xhr.status < 300) {
  11. var result = xhr.responseText;
  12. console.log(result);
  13. }
  14. }
  15. }
  16. // 2.设置请求信息
  17. xhr.open('get','/getpar1?names=张三 & pwd=123456',true);
  18. //3.发送请求(不同方法,发送请求的格式有不同)
  19. //get方法直接是()参数可省略,也可以(null)
  20. xhr.send();
  21. </script>

方式

  1. //1.创建异步对象
  2. var xhr =new XMLHttpRequest();
  3. //4.监听并返回值
  4. xhr.onreadystatechange=function(){
  5. //判断readyState==4
  6. if(xhr.readyState ==4){
  7. //判断状态码
  8. if(xhr.status>=200 && xhr.status<300){
  9. //接收返回内容
  10. var result=xhr.responseText;
  11. console.log(result);
  12. }
  13. }
  14. }
  15. //2.设置请求信息
  16. xhr.open('post','/ajaxpost',true);
  17. //post方式发送之前必须指定传递参数的数据格式
  18. //设置请求头,先指定请求参数的解析方式再传递数据
  19. xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  20. //3.发送请求
  21. xhr.send('names=bob & pwd=333');
  22. // 浏览器访问 http://localhost:8080/

方式

  1. var a='tom';
  2. var b='lili';
  3. //1.创建异步对象
  4. var xhr=new XMLHttpRequest();
  5. //4.监听等待返回值
  6. xhr.onreadystatechange=function(){
  7. //判断
  8. if(xhr.readyState==4){
  9. if(xhr.status>=200 && xhr.status<300){
  10. //接收返回内容
  11. var result=xhr.responseText;
  12. console.log(result);
  13. }
  14. }
  15. }
  16. //2.设置请求信息
  17. xhr.open('put','/ajaxput',true);
  18. //请求头
  19. xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  20. //3.发送请求
  21. xhr.send(`names=${b} & oldname=${a}`);

 方式

  1. var username='王五';
  2. //1.创建异步对象
  3. var xhr=new XMLHttpRequest();
  4. //4.监听并返回值
  5. xhr.onreadystatechange=function(){
  6. if(xhr.readyState==4){
  7. if(xhr.status>=200 & xhr.status<300){
  8. var result=xhr.responseText;
  9. console.log(result);
  10. }
  11. }
  12. }
  13. //2.设置请求信息
  14. xhr.open('delete',`/ajaxdel/${username}`,true);
  15. //3.发送请求
  16. xhr.send();

4.避免 icon的错误

<link rel="shortcut icon" href="#" />

三、DOM

的简述

DOM 全称 Document Object Model,即文档对象模型,它允许脚本(js)控制 Web 页面、窗口和文档。

简单说就是用js去动态操作浏览器窗口内的所有元素。

2. DOM 基本功能

-   查询某个元素

-   查询某个元素的祖先、兄弟以及后代元素

-   获取、修改元素的属性

-   获取、修改元素的内容

-   创建、插入和删除元素

简单说就是对页面元素的增删改查。

二、元素的操作(应用部分)

1.通过元素id获取到该元素

`()`在文档中按照 id 属性查找元素参数写 id 名。

```js

//获取到html元素中id叫做myDiv的元素整体

var myDiv = ('myDiv');

在能够支持ES6的浏览器中,可以简写方式获取元素对象。直接用id值代指当前元素对象。

2.事件——与元素交互

可以在 DOM 元素上绑定`onclick、onmouseover、onmouseout、onmousedown、onmouseup、ondblclick、onkeydown、onkeyup`等。JavaScript 能够在事件发生时执行。

(1)在 DOM 中直接绑定事件

直接在标签中设置事件属性,绑定方法,从而完成交互。

html:

  1. <input type="button" value="点我" onclick="hello(1)" />
  2. <script>
  3. function hello(a) {
  4. alert('hello world!');
  5. }
  6. </script>

(2)在 JavaScript 代码中绑定事件

可以通过 js 获取元素,在 js 中绑定获取的元素相关的事件,调用函数处理事件功能。

js:

  1. var btn = document.getElementById('mybtn');
  2. btn.onclick = function () {
  3. alert('hello');
  4. };

3. 获取/设置元素的内容innerHTML

获取/设置元素的内容。

innerHTML 在 JS 是双向功能:获取对象的内容或向对象插入内容。

html:

  1. <div id="myDiv">div元素</div>
  2. <script>
  3. var myDiv = document.getElementById('myDiv');
  4. myDiv.innerHTML = '<p>一个元素</p>';
  5. </script>

-   可以通过`("myDiv").innerHTML`来获取`id`为`myDiv`的对象的内嵌内容;

-也可以对某对象插入内容,如`("myDiv").innerHTML=’这是被插入的内容’;`这样就能向 id 为 myDiv 的对象插入内容。

4. value值的获取

元素的 value 属性可以直接获取到具有 value 属性元素的的值。多数情况用在获取表单相关元素中。

html:

  1. <input type="text" id="nn" />
  2. <input type="button" value="获取" οnclick="print()" />
  3. <script>
  4. var a = document.getElementById('nn');
  5. //通过事件获取值
  6. function print() {alert(a.value);}
  7. </script>

练习:细解

> 在页面上放入一个文本输入框、一个密码输入框、一个按钮

> 使用 js 获取两个输入框元素和一个按钮元素

> 点击按钮元素触发点击事件,获得文本输入框和密码输入框的内容,并在控制台查看

> 创建两个 p 标签,使用 js 获取两个 p 元素

> 将获取的用户输入的用户名和密码显示页面上

 01_get.html代码:

  1. <body>
  2. 用户:<input type="text" id="uname"><br>
  3. 密码:<input type="text" id="upwd"><br>
  4. <button onclick="ajax()">登录</button>
  5. <script>
  6. ajax();
  7. function ajax() {
  8. //1.创建xhr对象
  9. var xhr = new XMLHttpRequest();
  10. //4.原本接收数据,现在通过监听判断readyState的值,为4的时候收据就回来了
  11. xhr.onreadystatechange = function () {
  12. //()
  13. //判断readyState是4的时候才可以拿到后台的数据
  14. if (xhr.readyState == 4) {
  15. //判断返回内容成功,再接收数据
  16. if (xhr.status >= 200 && xhr.status < 300) {
  17. var result = xhr.responseText;
  18. console.log(result);
  19. }
  20. }
  21. }
  22. var myname=uname.value;
  23. var mypwd=upwd.value;
  24. // 2.设置请求信息
  25. xhr.open('get','/getpar1?names='+myname+'&pwd='+mypwd,true);
  26. //3.发送请求(不同方法,发送请求的格式有不同)
  27. //get方法直接是()参数可省略,也可以(null)
  28. xhr.send();
  29. }
  30. </script>
  31. </body>

 代码:

  1. //在当前目录下的终端中输入npm install express 安装
  2. //1.引入express
  3. var express = require('express');
  4. //2.创建web服务器,实例化
  5. var app = express();
  6. //3.设置端口
  7. app.listen(8080);
  8. /* 4.静态资源托管()将静态资源的
  9. 目录放入到参数中,不是必须只有这一个文件目录可以托管,
  10. 也不是只有这一个文件目录可以 */
  11. app.use(express.static('./public'));
  12. //5.在终端启动服务器node
  13. //接收前台?方式传递的参数
  14. app.get('/getpar1',(req,res)=>{
  15. console.log(req.query)
  16. })

 

 浏览器输入127.0.0.1:8080/01_get.html  回车,输入用户密码信息,点击登录

 

 后台获得数据:

5. 清空多余空格-trim()方法

-   `trim()`方法用于删除字符串的"头尾"空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。

-   `trim()`方法不会改变原始字符串。

-   `trim()`方法不适用于 null, undefined, Number 类型。

  1. var str = '  hello   ';
  2. alert(str.trim());

非空验证的方法

  1. var str1 = '   ';
  2. var str2 = ''
  3. var str3 = ' tom ';
  4. function notEmpty(s){
  5. var nstr = s.trim();
  6.    return nstr.length;
  7. }
  8. notEmpty(str1)
  9. notEmpty(str2)
  10. notEmpty(str3)
'
运行