当前位置: 首页 > news >正文

学php网站开发wordpress 询盘

学php网站开发,wordpress 询盘,比较好网站设计公司,wordpress 无法在线升级图片上传 传图片文件不能像传文字一样用JSON格式#xff0c;可以用form-data类型携带文件 1.获取图片文件对象 2.使用FormData#xff08;浏览器内置的构造函数#xff09;携带图片文件 3.提交表单数据到服务器#xff0c;返回图片网址 这里可能用到的事件监听器#…图片上传 传图片文件不能像传文字一样用JSON格式可以用form-data类型携带文件 1.获取图片文件对象 2.使用FormData浏览器内置的构造函数携带图片文件 3.提交表单数据到服务器返回图片网址 这里可能用到的事件监听器 change 事件通常用于在 HTML 表单元素的值改变时触发某些操作。最常见的应用场景是 input,textarea和 select 元素。当用户与这些元素交互并且它们的值发生改变后如果元素失去焦点例如用户点击了页面的其他部分或者按下了 Tab 键就会触发 change 事件。 表单可以存储文件数据。为了实现这一目标需要在HTML的form标签中添加enctypemultipart/form-data属性。这种编码类型允许表单发送二进制数据包括文件内容。当用户选择文件并提交表单时文件数据会被包含在表单的POST请求中并发送到服务器。服务器端的代码可以解析这个请求提取出文件数据并将其存储在服务器上。 bodyinput classupload typefile//选择的文件保存到了文件选择元素里img src altscript src../form-serialize.js/scriptscript srchttps://cdn.jsdelivr.net/npm/axios/dist/axios.min.js/scriptscript src../bootstrap-5.3.0-alpha1-dist/js/bootstrap.min.js/scriptscriptconst upload document.querySelector(.upload)upload.addEventListener(change, e {const f_d new FormData()f_d.append(img, e.target.files[0])axios({url: http://hmajax.itheima.net/api/uploadimg,method: post,data: f_d}).then(result { document.querySelector(img).srcresult.data.data.url})})/script /body 信息设置 提示框 好像bootstrap的提示框都是构造函数初始化 用show()显示 stylebody {background-color: #f0f2f5;padding: 20px;-moz-user-select: none;/*火狐*/-webkit-user-select: none;/*webkit浏览器*/-ms-user-select: none;/*IE10*/-khtml-user-select: none;/*早期浏览器*/user-select: none;font-size: 14px;}.container {background-color: #ffffff;padding: 20px;display: flex;padding-left: 0;margin: 0 auto;min-width: 700px;max-width: 1000px;border-radius: 2px;}.my-nav {width: 200px;border-right: 1px solid #f0f0f0;list-style: none;}.my-nav li {cursor: pointer;height: 40px;line-height: 40px;padding-left: 20px;font-size: 14px;}.my-nav li.active {background-color: #e9f7fe;color: #448ef7;border-right: 4px solid #448ef7;font-weight: 600;}.content {padding-top: 10px;/* padding-left: 40px; */flex: 1;display: flex;justify-content: space-evenly;}.content .title {font-size: 20px;margin-bottom: 30px;}/*.content .info-wrap {margin-right: 20px; }*/.content .avatar-box {display: flex;flex-direction: column;align-items: center;padding-top: 20px;/* flex: 1; */padding-top: 55px;width: 200px;}.content .avatar-box .avatar-title {font-size: 16px;text-align: left;align-self: flex-start;margin: 0;}.content .avatar-box .prew {width: 120px;height: 120px;border-radius: 50%;margin-bottom: 15px;}.content .avatar-box label {width: 100px;height: 30px;transition: all .3s;box-shadow: 0 2px 0 rgb(0 0 0 / 2%);cursor: pointer;font-size: 14px;border-radius: 2px;color: rgba(0, 0, 0, .85);border: 1px solid #d9d9d9;text-align: center;line-height: 30px;}.content .avatar-box label:hover {color: #40a9ff;border-color: #40a9ff;background: #fff;}.content .avatar-box #upload {display: none;}.content .user_form label:not(.male-label) {display: block;margin-bottom: 15px;margin-top: 15px;}.content .user_form .form-item {margin-bottom: 20px;}.content .user_form .form-item .male-label {margin-right: 20px;display: inline-flex;align-items: center;}.content .user_form input[typeradio] {margin-right: 10px;outline: none;background-size: contain;border: 1px solid rgba(0, 0, 0, .25);border-radius: 50%;box-sizing: border-box;width: 16px;height: 16px;appearance: none;}.content .user_form input[typeradio]:checked {border-radius: 50%;border-color: #0d6efd;background-color: #0d6efd;background-image: url(data:image/svgxml,%3csvg xmlnshttp://www.w3.org/2000/svg viewBox-4 -4 8 8%3e%3ccircle r2 fill%23fff/%3e%3c/svg%3e);}.content .user_form input:not([typeradio]) {height: 30px;appearance: none;}.form-item input:not([typeradio]),textarea {display: block;width: 330px;outline: none;font-size: 14px;border: 1px solid #d9d9d9;border-radius: 2px;transition: all .3s;padding-left: 5px;}.content .user_form textarea {padding-top: 10px;width: 350px;resize: none;}.content .user_form input:focus,textarea:focus {border-color: #40a9ff;border-right-width: 1px;z-index: 1;border-color: #40a9ff;box-shadow: 0 0 0 2px rgb(24 144 255 / 20%);border-right-width: 1px;outline: 0;}.content .user_form button.submit {background: #4D8FF7;width: 78px;height: 32px;color: white;text-align: center;line-height: 32px;font-size: 14px;color: #FFFFFF;letter-spacing: 0;font-weight: 500;border: none;cursor: pointer;}.toast {position: fixed;top: 20px;left: 50%;transform: translateX(-50%);}.toast .toast-body {padding: 0 !important;}.toast .alert-success {margin-bottom: 0 !important;}/style/headbody!-- toast 提示框 --div classtoast my_toast data-bs-delay1500div classtoast-bodydiv classalert alert-success info-box操作成功/div/div/div!-- 核心内容区域 --div classcontainerul classmy-navli classactive基本设置/lili安全设置/lili账号绑定/lili新消息通知/li/uldiv classcontentdiv classinfo-wraph3 classtitle基本设置/h3form classuser_form actionjavascript:;div classform-itemlabel foremail邮箱/labelinput idemail nameemail classemail typetext placeholder请输入邮箱 autocompleteoff/divdiv classform-itemlabel fornickname昵称/labelinput idnickname namenickname classnickname typetext placeholder请输入昵称 autocompleteoff/divdiv classform-itemlabel性别/labellabel classmale-labelinput typeradio namegender classgender value0男/labellabel classmale-labelinput typeradio namegender classgender value1女/label/divdiv classform-itemlabel fordesc个人简介/labeltextarea iddesc namedesc classdesc placeholder请输入个人简介 cols20 rows10autocompleteoff/textarea/divbutton classsubmit提交/button/form/divdiv classavatar-boxh4 classavatar-title头像/h3img classprew src../img/头像.png altlabel forupload更换头像/labelinput idupload typefile classupload/div/div/divscript src../form-serialize.js/scriptscript srchttps://cdn.jsdelivr.net/npm/axios/dist/axios.min.js/scriptscript src../bootstrap-5.3.0-alpha1-dist/js/bootstrap.min.js/scriptscriptconst user_form document.querySelector(.user_form)axios({ //渲染页面url: http://hmajax.itheima.net/api/settings,params: {creator: wwx}}).then(result {const obj result.data.datafor (let key in obj) {if (key avatar) {document.querySelector(.prew).src obj[key]}else if (key gender) {const gender document.querySelectorAll(.gender)gender[obj[key]].checked true} else {document.querySelector(.${key}).value obj[key]}}})const upload document.querySelector(.upload)upload.addEventListener(change, e {const fd new FormData()fd.append(avatar, e.target.files[0])fd.append(creator, wwx)axios({url: http://hmajax.itheima.net/api/avatar,method: put,data: fd}).then(result {document.querySelector(.prew).src result.data.data.avatar})})document.querySelector(.submit).addEventListener(click, () {//修改const obj serialize(user_form, { hash: true, empty: true })obj.gender obj.genderobj.creator wwxaxios({url: http://hmajax.itheima.net/api/settings,method: put,data: obj}).then(result {const my_toast document.querySelector(.my_toast)const toastnew bootstrap.Toast(my_toast)toast.show()})})/script /bodyXMLhttprequestXHR 该对象用于与服务器交互。 axios对XHR封装其内部就是采用XHR与服务器交互 查询参数 http://xxx.com/xxx/xxx?参数名1值1参数名2值 可以自动生成字符串 promise 用于表示一个异步操作的最终完成及其结果值 promise的三种状态 待定pending初始状态即没有被兑现也没有被拒绝 已兑现fulfilled操作成功完成 以拒绝rejected操作失败 有了Promise对象就可以把异步操作以同步操作的流程表达出来避免了层层嵌套的回调函数。此外Promise对象提供了统一的接口使得控制异步操作更加容易。Promise通过将异步操作的结果封装在一个对象中使得我们可以更加清晰和简洁地处理异步操作。 异步任务有结果后与处理函数相关联 // 假设 fetchData 是一个返回 Promise 的函数 function fetchData(url) { return new Promise((resolve, reject) { // 模拟异步操作 setTimeout(() { const data Data from ${url}; resolve(data); }, 1000); }); } // 使用 Promise 链式调用 fetchData(https://example.com/api/data1) .then(data1 { console.log(data1); return fetchData(https://example.com/api/data2); // 返回新的 Promise }) .then(data2 { console.log(data2); // 可以继续添加更多的异步操作... }) .catch(error { console.error(An error occurred:, error); }); 不用过渡嵌套返回信息 运用promise和xhr封装axios function myaxios(obj) {return new Promise((resolve, reject) {const xhr new XMLHttpRequest()xhr.open(obj.method || get, obj.url)if (obj.params) {const paramsobj new URLSearchParams(obj.params)const parame_string paramsobj.toString()obj.url ?${parame_string}}xhr.addEventListener(loadend, () {if (xhr.status 200 xhr.status 300)resolve(JSON.parse(xhr.response))elsereject(new Error(xhr.response))})if (obj.data) {xhr.setRequestHeader(Content-Type, application/json)//设置请求头const data_srting JSON.stringify(obj.data)xhr.send(data_srting)//发送请求体} else {xhr.send()}})}同步代码与异步代码 同步代码 代码按顺序一行一行执行上一行执行完才会执行下一行 异步代码 耗时不必等待任务完成异步代码完成后会用回调函数回传 Promise-链式调用 依靠then()方法返回一个新生成的promise对象特性继续串联下一个任务直到结束 创建的promise方法调用then方法then具有回调函数return的结果可以传递给then产生的新promise对象 我们可以使用then函数返回的新promise对象特征一直串联解决函数嵌套 async与await-异步编程终极解决方案 基于promise而无需调用 用async声明该函数为异步函数在函数内使用await获取promise对象成功状态结果值 事件循环 执行代码和收集异步任务的模型在调用栈空闲时反复调用任务队列里回调函数的机制 js执行同步代码遇到异步代码交给宿主浏览器环境运行 宏任务与微任务 宏任务由浏览器环境执行的异步代码 任务执行所在代码js脚本执行事件浏览器定时器浏览器Ajax请求的完成事件浏览器用户交互事件浏览器 微任务由js引擎环境执行的异步代码 promise.then()  promise本身是同步的而then和catch回调函数是异步的 promise.all 合并多个promise对象等待所有同时成功完成或有一个失败做后续逻辑 const pPromise.all([Promise对象,Promise对象,Promise对象...]) p.then(result {//result结果[Promise成功结果Promise成功结果Promise成功结果...] }).catch(error {//第一个失败的Promise对象抛出的异常 })
http://www.zqtcl.cn/news/519430/

相关文章:

  • 想自己做网站流程国家住建网查企业资质
  • 英文网站怎么设计google浏览器入口
  • 重庆网站建设公司魁网个人备案网站名
  • 怀柔营销型网站建设wordpress菜单定制
  • 大连装修网站推广天津市建设信息工程网
  • 服装网站建设建议域名注册最好的网站
  • 小游戏网站网络营销推广岗位
  • 做一百度网站保健品网站建设案例
  • 沙田镇仿做网站如何建设钓鱼网站
  • 如何用域名进网站企业做电商网站有哪些
  • soho做网站网站的k线图怎么做
  • 成都专业的网站建设公司做网站需要哪个专业
  • php彩票网站建设源码有人看片吗免费观看
  • 自己做网站的准备工作营销平台推广
  • 建站网站平台建站工具的优点
  • 各学院二级网站建设通报wordpress 修改admin
  • 网站建设加推广需要多少钱wordpress标签自动生成插件下载
  • 周村区建设局网站石家庄网站运营公司
  • 网站描述怎么设置wordpress仿模板
  • 宁波市网站建设公司h5游戏是什么意思
  • 青岛网站设计案例全栈网站开发
  • 欢迎访问中国建设银行网站个人客户网站建设需要经历什么步骤
  • 建设银行怀柔支行营业部网站企业官网手机版
  • cms那个做网站最好大连网站开发平台
  • 佛山建设外贸网站公司可信网站图标
  • 沈阳.....网站设计连云港优化网站团队
  • 网站添加白名单想学ui设计从哪里入手
  • 做期货与做网站的关系淮安市城市建设档案馆网站
  • 网站建设的技术亮点单位宣传册设计样本
  • 网站建设与维护服务敦化市建设局网站