前端学习(1431):ajax封装六

ajax.js

// 引入express框架
const express = require('express');
// 路径处理模块
const path = require('path');
const bodyParser = require('body-parser');
const fs = require('fs');
// 创建web服务器
const app = express();app.use(bodyParser.json());// 静态资源访问服务功能
app.use(express.static(path.join(__dirname)));// 对应01html文件
app.get('/first', (req, res) => {res.send('Hello, Ajax');
});// 对应02html文件
app.get('/responseData', (req, res) => {res.send({ "name": "zs" });
});// 对应03html文件
app.get('/get', (req, res) => {res.send(req.query);
});// 对应04html文件
app.post('/post', (req, res) => {res.send(req.body);
});// 对应05html文件
app.post('/json', (req, res) => {res.send(req.body);
});// 对应06html文件
app.get('/readystate', (req, res) => {res.send('hello');
});// 对应07html文件
app.get('/error', (req, res) => {//console.log(abc);res.status(400).send('not ok');
});// 对应08html文件
app.get('/cache', (req, res) => {fs.readFile('./test.txt', (err, result) => {res.send(result);});
});// 监听端口
app.listen(3000);
// 控制台提示输出
console.log('服务器启动成功');

ajax10.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Document</title>
</head><body><script type="text/javascript">function ajax(options) {// 存储的是默认值var defaults = {type: 'get',url: '',data: {},header: {'Content-Type': 'application/x-www-form-urlencoded'},success: function() {},error: function() {}};// 使用options对象中的属性覆盖defaults对象中的属性Object.assign(defaults, options);// 创建ajax对象var xhr = new XMLHttpRequest();// 拼接请求参数的变量var params = '';// 循环用户传递进来的对象格式参数for (var attr in defaults.data) {// 将参数转换为字符串格式params += attr + '=' + defaults.data[attr] + '&';}// 将参数最后面的&截取掉 // 将截取的结果重新赋值给params变量params = params.substr(0, params.length - 1);// 判断请求方式if (defaults.type == 'get') {defaults.url = defaults.url + '?' + params;}/*{name: 'zhangsan',age: 20}name=zhangsan&age=20*/// 配置ajax对象xhr.open(defaults.type, defaults.url);// 如果请求方式为postif (defaults.type == 'post') {// 用户希望的向服务器端传递的请求参数的类型var contentType = defaults.header['Content-Type']// 设置请求参数格式的类型xhr.setRequestHeader('Content-Type', contentType);// 判断用户希望的请求参数格式的类型// 如果类型为jsonif (contentType == 'application/json') {// 向服务器端传递json数据格式的参数xhr.send(JSON.stringify(defaults.data))} else {// 向服务器端传递普通类型的请求参数xhr.send(params);}} else {// 发送请求xhr.send();}// 监听xhr对象下面的onload事件// 当xhr对象接收完响应数据后触发xhr.onload = function() {// xhr.getResponseHeader()// 获取响应头中的数据var contentType = xhr.getResponseHeader('Content-Type');// 服务器端返回的数据var responseText = xhr.responseText;// 如果响应类型中包含applicaition/jsonif (contentType.includes('application/json')) {// 将json字符串转换为json对象responseText = JSON.parse(responseText)}// 当http状态码等于200的时候if (xhr.status == 200) {// 请求成功 调用处理成功情况的函数defaults.success(responseText, xhr);} else {// 请求失败 调用处理失败情况的函数defaults.error(responseText, xhr);}}}ajax({url: 'http://localhost:3000/responseData',success: function(data) {console.log('这里是success函数');console.log(data)}})/*请求参数要考虑的问题1.请求参数位置的问题将请求参数传递到ajax函数内部, 在函数内部根据请求方式的不同将请求参数放置在不同的位置get 放在请求地址的后面post 放在send方法中2.请求参数格式的问题application/x-www-form-urlencoded参数名称=参数值&参数名称=参数值name=zhangsan&age=20application/json{name: 'zhangsan', age: 20}1.传递对象数据类型对于函数的调用者更加友好2.在函数内部对象数据类型转换为字符串数据类型更加方便*/</script>
</body></html>

ajax1.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Document</title>
</head><body><script type="text/javascript">// 1.创建ajax对象var xhr = new XMLHttpRequest();// 2.告诉Ajax对象要向哪发送请求,以什么方式发送请求// 1)请求方式 2)请求地址xhr.open('get', 'http://localhost:3000/responseData');// 3.发送请求xhr.send();// 4.获取服务器端响应到客户端的数据xhr.onload = function() {// console.log(typeof xhr.responseText)// 将JSON字符串转换为JSON对象var responseText = JSON.parse(xhr.responseText);// 测试:在控制台输出处理结果console.log(responseText)// 将数据和html字符串进行拼接var str = '<h2>' + responseText.name + '</h2>';// 将拼接的结果追加到页面中document.body.innerHTML = str;}</script>
</body></html>

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# 操作oracle数据库,C#连接oracle数据库增删改查实例

【实例简介】C#连接oracle数据库&#xff0c;增删改查实例&#xff0c;OracleParameter防Sql注入等&#xff0c;适用于新手学习【实例截图】【核心代码】5868e8be-414a-4138-8390-2fbbf9a1d530└── CS1├── CS1│ ├── app.config│ ├── bin│ │ ├── Debu…

毫秒级百万数据分页存储过程

然后创建分页存储过程;这个是基于SQL 2005 的ROW_NUMBER的, SQL 2000 不适用; SQL 2008 我没有安装,所以也没有测试过!估计应该可以运行. 2种算法可以选择 1. 使用 BETWEEN ; 2. TOP ; 代码中已经注释了. 我测试了一下2种方法基本没有什么区别;代码如下: 123456789101112…

oracle11连12c报权限错误,关于Oracle12c连接报错的问题

关于Oracle12c连接报错的问题这段时间因为项目原因&#xff0c;接触到了Oracle12C&#xff0c;其实问题很简单&#xff0c;就是pl/sql developer能够访问数据库服务端即可&#xff0c;却碰到了奇奇葩葩的问题&#xff0c;现分享一下。1、在java端报Ora-12505错误&#xff0c;即…

前端学习(1433):vue是什么

#### 1.1 Vue是什么> Vue.JS是优秀的前端 JavaScript 框架 > > react/angular/vue库和框架的区别:- 库(如jQuery)库是工具. 提供大量API&#xff0c;体现了封装的思想、需要自己调用这些API- 框架框架提供了一套完整解决方案,使用者要按照框架所规定的某种规范进行开发…

oracle10客户端tnsname,连接Oracle RAC 的tnsname.ora设置

由于Oracle数据库通常需要在不同地方被访问&#xff0c;所以Oracle开发人员必须搞清楚数据库性能如何被网络通讯所影响。由Oracle提供的TNS(Transparent Network Substrate)允许不同数据库之间的分布式通讯。作为一种分布式协议的TNS&#xff0c;允许远距离的系统之间的透明数据…

【100亿次的挑战】之春晚控制后台故事分享

讲师&#xff1a;freyli 项目历程简介在介绍控制后台部分之前&#xff0c;先简单回顾下项目的时间线&#xff1a; 10月25日&#xff0c;意向、调研、策划、沟通 11月24日&#xff0c;第一次技术初审 12月7日&#xff0c;互动形态框架确定&#xff0c;时间轴初现 12月15日&#…

前端学习(1434):为什么学习vue

#### 1.2 为什么要学习 Vue传统开发模式: JQueryRequireJS/SeaJSartTemplateGulp/Grunt随着项目业务场景的复杂,传统模式已无法满足需求就出现了Angular/React/Vue等框架- 企业需求 - 主流框架之一(React Angular Vue) - 易用、灵活、高效

oracle 如何创建job,oracle创建job

一、基本语法与MysqL的event事件类似&#xff0c;用来创建数据库的定时任务。DBMS_JOB.SUBMIT(job OUT BINARY_INTEGER,what IN VARCHAR2,NEXT_DATE IN DATE DEFAULTSYSDATE,interval IN VARCHAR2 DEFAULT NULL,no_parse IN BOOLEAN DEFAULT FALSE,instance IN BINARY_INTEGER …

如何简单快速调试高大上的谷歌浏览器

上一篇我们简单的将了在Ubuntu上编译chromium&#xff0c;android content_shell_apk的编译&#xff0c;一切顺利的就能生成apk。但是我们仅仅只是照搬了人家google开源的东西&#xff0c;作为一个开发者我们应带着探索的精神&#xff0c;都说它稳定&#xff0c;速度快。它为什…

前端学习(1435):vue能做什么

#### 1.3 Vue 能做什么- 最大程度上解放了 DOM 操作 - 单页web项目(SinglePageApplication项目,例如[Worktile官网](https://worktile.com/))开发 - 传统网站开发

linux下proc目录,Linux /proc目录详解

3. 例子3.1 /proc/linuxidc.comlinuxidc:~$ ls /proc/1 16819 21242 2180 2494 8768 interrupts partitions116 16820 21244 2181 2524 885 iomem sched_debug11740 17901 21245 21810 2525 acpi ioports scsi1174…

前端学习(1436):vue特点

#### 1.4 核心特性- 双向数据绑定- vue(借鉴了react的虚拟DOM,借鉴了angular双向数据绑定) - 通过 **指令** 扩展了 HTML&#xff0c;通过 **表达式** 绑定数据到 HTML - 解耦视图与数据 - 可复用**组件** - 虚拟DOM - M-V-VM - 数据驱动视图

集合排序求平均

static void Main(string[] args) { ArrayList al new ArrayList(); //定义一个集合Console.Write("请输入人数:"); int n Convert.ToInt32(Console .ReadLine ()); …

Linux装c编译器gcc,c编译器进阶之路,linux下的gcc c编译器使用教程

c编译器的重要性不言而喻&#xff0c;从往期c编译器文章中&#xff0c;如c编译器优化、选定c编译器等&#xff0c;想必大家对c编译器均已有所了解。往期文章中&#xff0c;小编主要从宏观方面为大家讲解c编译器&#xff0c;此外对于gcc c编译器的讲解也大多基于windows。本文中…

前端学习(1437):vue一些链接

#### 1.5 一些链接[Vue官方文档](https://cn.vuejs.org/)[Vue开源项目汇总](https://github.com/opendigg/awesome-github-vue)[Vue.js中文社区](https://www.vue-js.com/)

GDB调试程序(二)

以下文章转自陈皓CSDN博客: http://blog.csdn.net/haoel/article/details/2879 GDB的命令概貌——————— 启动gdb后&#xff0c;就你被带入gdb的调试环境中&#xff0c;就可以使用gdb的命令开始调试程序了&#xff0c;gdb的命令可以使用help命令来查看&#xff0c;如下所示…

Linux下CMAKE编译jsoncpp,c – 如何为jsoncpp编写cmake模块?

我想使用jsoncpp编写C代码以解析JSON文件.让我解释一下我做了什么.我创建了一个CMakeLists.txt,我创建了一个FindJsoncpp.cmake以及一个简单的c文件来测试jsoncpp.当我使用-I /usr/include / jsoncpp / -ljsoncpp编译没有cmake的C源时,它工作正常.但是当我尝试使用cmake构建它时…

前端学习(1438):vue三种安装方式

1. 直接下载源码然后通过路径引入- 开发版本&#xff1a;https://vuejs.org/js/vue.js- 生产版本&#xff1a;https://vuejs.org/js/vue.min.js2. CDNjs <script src"https://cdn.jsdelivr.net/npm/vue2.5.16/dist/vue.js"></script> 3. 使用 npm 下载&…

三星s7共享网络给linux,三星Galaxy S7WiFi状态下可以共享wifi热点吗【详解】

目前&#xff0c;越来越多的智能手机都具有wifi热点的功能&#xff0c;不仅方便了不少网友之间的网络流量共享&#xff0c;而且一个wifi热点还可以共享到多个设备。而三星最新款手机三星Galaxy S7与S7 Edge在wifi热点功能的基础上&#xff0c;将wifi热点功能进行的升华&#xf…