前言

学前后端也有一段时间了,一直没有时间整理一下前后端交互方面的知识,想着再回顾一下顺带着整理出自己的学习笔记。可能有些地方写的不是很好,欢迎批评指正!!!


目录

前言

一、AJAX是什么

二、AJAX基础

创建一个XMLHttp实例对象

发送请求的方法

获取状态码

主要函数

三、表单提交的几种方法

1.简单的form表单提交

2.通过修改表单的onsubmit()函数来提交

3.使用JavaScript的事件监听进行表单提交

4.无刷新页面表单提交

5.AJAX表单提交

总结


本篇文章主要讲的是AJAX,主要整理一下AJAX的基础知识,以及如何是用AJAX提交构造http请求实现前后端的交互。那什么是前后端交互呢?简单地讲,其实前后端交互就是用户在前端页面的触发事件产生的请求数据通过表单提交的方式发送到后端服务器中进行处理,后端再将用户请求的数据发送到前端页面进行展示。

在前端的学习中,相信大家可能会看到如下代码:

<div><form action="/登录页面" method="POST" ><input class="input_box" type="text" name="user" placeholder="用户名"><br><input class="input_box"  type="password" name="pwd" placeholder="密码"><br><button class="button_box">一键登录</button></form>
</div>

其中,在form表单上的action这个参数指的是表单提交到的路由地址,以在本机上开发为例,那这个地址就是http://127.0.0.1:80/登录页面,http请求方法就是post。上述的代码段实现的其实就是前后端交互的一部分过程。这里的form表单提交仅实现了前端往后端发数据,并没有在同一路由下实现前端处理后端数据并展示给用户的部分,自然也就无法实现无重载刷新页面数据。那么如何更好地实现前后端交互过程呢?如何让页面实现无刷新重载?这时候就要用到了AJAX表单提交了。


一、AJAX是什么

AJAX(Asynchronous JavaScript and XML)其实就是一个异步重载页面的方法,主要执行在javaScript脚本中,在与后端进行数据交互的过程中实现前端页面部分数据的无重载更新,提高用户体验和前端代码的可维护性。


二、AJAX基础

这里放一张我个人学习AJAX时候整理的思维导图。

个人觉得上面这张图应该比较详细了。接下来我就简单介绍一下:

创建一个XMLHttp实例对象

//为了兼容不同的浏览器,需要对XMLHttpRequest对象是否存在进行判断
var xmlh;
if (window.XMLHttpRequest)
{xmlh=new XMLHttpRequest();
}
else
{xmlh=new ActiveXObject("Microsoft.XMLHTTP");
}

发送请求的方法

//创建实例对象
var xmlh;
if (window.XMLHttpRequest)
{xmlh=new XMLHttpRequest();
}
else
{xmlh=new ActiveXObject("Microsoft.XMLHTTP");
}/*open方法
xmlh.open(method,url,async)method -- http请求的方法url    -- 请求发送的地址async  -- 是否是异步*//*send方法
xmlh.send(string)string -- 仅用于post请求传值
*///设置请求头名称和值
xmlh.setRequestHeader("name":"values");

获取状态码

在前端页面发起请求时,我们需要在JavaScript文件中去获取服务器端返回的状态码以便于及时做出响应,那么如何获取状态码呢?

//其中readState存储有XMLHttpRequest的状态//status是状态码xmlh.onreadystatechange=function()
{if (xmlh.readyState==4 && xmlh.status==200){document.getElementById("myDiv").innerHTML=xmlh.responseText;}
}

 主要函数

  • showHint()
  • showCustomer()
  • loadXMLDoc()

showHint()函数是由onkeyup的监听事件触发,一般onkeyup可以设置在inpiut组件上

showCustomer()函数是由onchange监听事件触发,一般设置在select组件上

loadXMLDoc()用来读取xml文件


三、表单提交的几种方法

在前端中表单的提交到后端有如下的几种方式

1.简单的form表单提交

<div><form action="/登录页面" method="POST" ><input class="input_box" type="text" name="user" placeholder="用户名"><br><input class="input_box"  type="password" name="pwd" placeholder="密码"><br><button class="button_box">一键登录</button></form>
</div><!--或者使用input,但是type要改为submit-->
<div><form action="/登录页面" method="POST" ><input class="input_box" type="text" name="user" placeholder="用户名"><br><input class="input_box"  type="password" name="pwd" placeholder="密码"><br><input type="submit" class="button_box">表单提交</button></form>
</div>

2.通过修改表单的onsubmit()函数来提交

这里就是简单举一个提交数据有效性判断的例子。

<script type="text/javascript">function check(){//判断用户名是否为空,需要returnif(document.form1.username.value==""){window.alert("空!");return false;}else return true;}
</script>
</head>
<body><form name="form1" method="" action="/" οnsubmit="return check()"><input type="text" name="username" /><input type="password" name="userpwd" /><input type="submit" value="提交表单"  /></form></body>

3.使用JavaScript的事件监听进行表单提交

这种方法使用起来比较灵活,这里简单举一个例子。

<form id="form" action="" method=""><input type="text" name="name"/>
</form>
<script>document.getElementById("form").submit();
</script>

4.无刷新页面表单提交

<form action="/" method="post" target="target"><input type="text" name="name"/>
</form>
<!--注意这里的iframe是隐藏起来的,你也可以让它显示出来看看-->
<iframe name="target" style="display:none"></iframe>

5.AJAX表单提交

html代码如下:

<div class="form box-style" role="form"><input id="name-input" class="form-text sub" type="text" name="login_name" placeholder="请输入用户名"><input id="pwd-input" class="form-pwd sub" type="password" name="login_pwd" placeholder="请输入密码"><input id="btn" class="form-btn do-login" type="button"  value="立即登录">
</div>

JavaScript代码如下:

这里借助的是jQuery.js的写法实现AJAX表单提交。

$(document).ready(function($(".test").click(function(){$.ajax({url:common_ops.buildUrl("/login"),type:"POST",data:{'login_name':login_name,'login_pwd':login_pwd} ,dataType:'json',success:function(res){var callback = null;if(res.code==200){callback = function(){window.location.href = common_ops.buildUrl("/");}}common_ops.alert(res.msg,callback);})}})    ))

总结

上面我大致讲述了AJAX的基本原理和使用方法,以及多种表单提交方法。在做项目中个人其实更多的是使用前端框架下的ajax表单提交,比较少用到XMLHttpRequest,虽然底层实现是一样的。前后端数据交互其实可以说是前后端开发学习中比较重要的一环,有时间的话后续也会给出我在学习这块内容时相应的知识整理。

喜欢的宝子劳烦举个爪子点个赞哈哈哈。。。

前后端交互之——AJAX提交相关推荐

  1. ajax学习----json,前后端交互,ajax

    json <script>var obj = {"name": "xiaopo","age": 18,"gender& ...

  2. JavaScript 学习笔记(八)前后端交互;Ajax进行前后端交互

    目录 一.前后端 二.前后端接口 三.Ajax 1. ajax接口步骤 2. 返回为json格式 四.请求方式 五.案例:登录 一.前后端 前端:用户可以看见的界面,我们一般浏览网页时看到的界面,展现 ...

  3. [JavaScript][AJAX] 前后端交互流程,ajax工作流程

    目录 前后端交互流程 1.了解服务器 : 提供服务器的机器(计算机) 2.前端 访问服务器的几种方式 3.ajax技术 : 页面不跳转的情况下,向服务器请求数据 4.前后端交互三个流程 ajax工作流 ...

  4. 必学习的前后端交互框架ajax

    ajax显然是最重要的框架 无论是c#,java,web程序通通能够解决前后端问题. 现在越来越多的人能够开发,为什么? 框架已经改变了程序员,现在基本是个程序员都可以在一个星期内写一个web程序. ...

  5. 【前端】前后端交互重点Ajaxの介绍及实战

    ❤️Ajax❤️ 每篇前言: 第一部分:JSON简介 效果展示: 第二部分:前后交互 1.此处介绍前后交互的两种方式: (1)利用form表单里的name属性进行前后端交互 HTML代码: Pytho ...

  6. 一、Django前后端交互之Ajax和跨域问题

    一.Ajax介绍 1.概述 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.AJAX(Asynchronous Javascript And XML)翻译成中文就是" ...

  7. Flask使用ajax进行前后端交互

    ajax前后端交互的使用已经非常普及了, 这种数据交互方式比表单提交数据带给用户的使用体验更好一些.同时,利用ajax交互时数据传输一般使用json,我们可以很方便的管理我们所需要的数据.只需要定义好 ...

  8. 前后端交互ajax和axios入门讲解,以及http与服务器基础

    ajax和http小白入门,客户端与服务器基础讲解,前后端交互(从入门到实践详细解析) 文章目录 ajax和http小白入门,客户端与服务器基础讲解,前后端交互(从入门到实践详细解析) 前言 一.Aj ...

  9. 前后端交互——Ajax

    前后端交互Ajax Ajax jQuery中的ajax $.get() $.post() $.ajax() 案例:图书列表 Ajax Ajax 即"AsynchronousJavascrip ...

最新文章

  1. 网页如何与mysql服务器建立连接不上,html与mysql建立连接数据库
  2. 盐为什么能使冰熔化得更快
  3. logging总结 - log4j2使用流程[归档存储]
  4. The Future Of the Software Development
  5. 比Redis快5倍的中间件,为啥这么快?
  6. xilinx FPGA的远程更新(动态加载)详解(Using a Microprocessor to Configure 7 Series FPGAs)
  7. ssl1747-登山机器人【离散化,玄学,贪心】
  8. 2018南京区域赛 J-Prime Game
  9. mysql 数据库日志管理工具_mysql mysqlbinlog日志管理工具使用教程
  10. WF4.0 Beta1 CancellationScope 取消容器
  11. HoloLens 2开发:关闭性能分析窗口
  12. Java开发者还用SSH?大清朝都亡了,你知道吗?
  13. linux孟庆昌第六章课后题_周三多管理学第5版课后答案资料笔记和课后习题含考研真题详解...
  14. 最小二乘支持向量机--LSSVM分类及MATLAB代码实现
  15. Andriod程序的结构
  16. DropdownMenu 下拉菜单的使用
  17. 借助Net-Speeder对服务器进行优化
  18. mysql聚合函数求数据总和的语句,MySQL数据库考试试题和答案
  19. 软件测试肖sir__009之mysql多表(4)
  20. dom4j解析xml错误-version 后面跟随的值必须是用引号括起来的字符串

热门文章

  1. 热成像进入AI人工智能时代!精准人脸识别体温计,实名制测量体温
  2. 多懂点SQL可以写出更好的接口
  3. matlab半小提琴图,不会编程,也可以画小提琴图啦!
  4. 微信小程序JSwxs获取当前时间戳
  5. ngx_waf 防火墙
  6. 计算机日常英语句子,计算机英语句子
  7. 通过浏览器中的F12中来查看接口的入参、出参和网页响应时间(新手教程)
  8. 2022年产品经理考这个证书绝对超值(NPDP)
  9. 购买2019最佳性价比Android智能手表(smart watch)
  10. 贪婪洞窟2如何修改服务器,贪婪洞窟2改造怎么省钻 改造省钻方法详解[多图]