详解Ajax请求(一)前言——同步请求的原理

时间:2022-12-25 13:14:57

我们知道,ajax是一种异步请求的方式,想要了解异步请求,就必须要先从同步请求说起。常见的同步请求的方式是form表单的提交,我们先从一种同步请求的示例说起。

我们希望输入姓名可以从后台得到身份证号。

详解Ajax请求(一)前言——同步请求的原理

那么用同步请求的方式要这么做

前端代码:

<form action="" id = "formId">
<input type="button" id="testBtn" value="测试按钮" onclick="sentSyn();"/><br>
姓名:<input type="text" name = 'name' value=""/><br>
身份证号:<input type="text" name = 'ID' value="${ID }"/><br>
</form>
<script type="text/javascript">alert(111);
function sentSyn(){
    document.getElementById("formId").action = "<%=basePath %>/manage/test/syn";
    document.getElementById("formId").submit();
}
</script>

后台代码:

@RequestMapping("/syn")
public void testSyn(HttpServletRequest request, HttpServletResponse response){
try {
request.setAttribute("ID", "12345");
request.getRequestDispatcher("/ajax.jsp").forward(request, response);
} catch (ServletException | IOException e) {
e.printStackTrace();
} }

姓名输入"小明" 点击按钮页面上的效果是这样的:

详解Ajax请求(一)前言——同步请求的原理    详解Ajax请求(一)前言——同步请求的原理      详解Ajax请求(一)前言——同步请求的原理

alert(111)先弹了出来,说明页面重新加载了一次,而且得到小明的身份证号后,名字不见了,原先的数据消失了。要解决这个问题,你用同步请求的方式也是可以的,

在你的后台代码里加上一行:request.setAttribute("name", request.getParameter("name"));就可以实现数据的回显。但是弹框还是会出现,说明页面又一次加载了。

(当然,你这样做输入中文的话,会出现中文乱码的问题,这个问题不在本文的讨论范围之内,有兴趣可以查看我的另一篇博客关于乱码问题的研究:http://www.cnblogs.com/cdf-opensource-007/p/6337448.html)

由此我们可以推断出同步请求是怎么跟服务器进行数据交互的

  使用同步请求,服务器将响应的数据直接输送给浏览器的内存,导致覆盖浏览器内存中原有的数据,浏览器接收到响应的数据后只能展示服务器端返回的数据,无法展示发送请求之前在浏览器中添加的数据。

  当你使用同步请求与服务器进行数据交互的时候,浏览器是直接面对服务器的,也就是在服务器处理请求的过程中浏览器处于等待,卡死的状态,你无法在页面上进行其他的操作。而且当页面信息量较大时,你使用同步请求与服务器进行数据交互,又要回显页面上众多的数据时,你的后台代码将会写的很麻烦既要处理数据的回显又要处理请求,增加服务器的压力。当然同步请求也有他的优点,当你页面上需要与服务器的数据交互的操作较少时或者需要回显的数据较少时,推荐使用同步,因为它是直接与服务器进行数据交互的。仁者见仁智者见智,具体问题具体分析,要根据你的使用场景进行选择。

今天就先写道这里已经很晚了,下篇博客将会对ajax异步请求的原理进行分析。

详解Ajax请求(一)前言——同步请求的原理的更多相关文章

  1. &dollar;&period;ajax&lpar;&rpar;方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )

    $.ajax()方法详解   jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...

  2. javascript 异步请求封装成同步请求

    此方法是异步请求封装成同步请求,加上token验证,环境试用微信小程序,可以修改文件中的ajax,进行封装自己的,比如用axios等 成功码采用标准的 200 到 300 和304 ,需要可以自行修改 ...

  3. 【PPT详解】曹欢欢:今日头条算法原理

    [PPT详解]曹欢欢:今日头条算法原理 悟空智能科技 4月8日 公众号后台回复:“区块链”,获取区块链报告 公众号后台回复:“sq”,进入区块链分享社群 热文推荐: 1000位专家推荐,20本区块链必 ...

  4. 详解 QT 源码之 Qt 事件机制原理

    QT 源码之 Qt 事件机制原理是本文要介绍的内容,在用Qt写Gui程序的时候,在main函数里面最后依据都是app.exec();很多书上对这句的解释是,使 Qt 程序进入消息循环.下面我们就到ex ...

  5. 详解Ajax请求(四)——多个异步请求的执行顺序

    首先提出一个问题:点击页面上一个按钮发送两个ajax请求,其中一个请求会不会等待另一个请求执行完毕之后再执行? 答案是:不会,这两个异步请求会同时发送,至于执行的快与慢,要看响应的数据量的大小及后台逻 ...

  6. 详解Ajax请求(二)——异步请求原理的分析

    在上一文章里,我们分析了同步请求的原理.当浏览器向服务器发送同步请求时,服务处理同步请求的过程中,浏览器会处于等待的状态,服务器处理完请求把数据响应给浏览器并覆盖浏览器内存中原有的数据,浏览器重新加载 ...

  7. 详解ASP&period;NET&&num;160&semi;MVC应用程序请求生命周期

    ------转载当一个ASP.NET MVC应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在ASP.NET MVC应用程序Http request 和Http response 过程中, ...

  8. 详解AJAX工作原理以及实例讲解(通俗易懂)

    什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...

  9. 机器学习 &vert; 详解GBDT在分类场景中的应用原理与公式推导

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第31篇文章,我们一起继续来聊聊GBDT模型. 在上一篇文章当中,我们学习了GBDT这个模型在回归问题当中的原理.GBD ...

随机推荐

  1. ubuntn下 nginx&plus;phpstorm 中配置xdebug调试

    xdebug安装和配置说明,主要用于个人学习记录. 一.echo phpinfo(); 搜素xdebug,若未搜素到,则标识未安装或安装失败. 二.拷贝步骤1中输出的所有结果.访问http://xde ...

  2. Android 模式对话框提示Dialog

    1.先写一个Dialog类   CustomDialog package com.example.heng.adtest; import android.app.AlertDialog; import ...

  3. Python 代码规范

    命名 module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, ...

  4. SSH框架的多表查询(方法二)增删查改

     必须声明本文章==>http://www.cnblogs.com/zhu520/p/7773133.html  一:在前一个方法(http://www.cnblogs.com/zhu520/p ...

  5. 与JMeter的第一次亲密接触

    postman和JMeters是外部接口测试的两个工具,通过界面化的方法,来实现操作http报文携带的请求字段.VK值.json.cookie.header值及文件.本篇主要介绍JMeter.   测 ...

  6. 用纯c语言完成16位模式下的引导程序

    gcc在16位模式下做引导程序遇到的问题太多了,不过费了很大劲逐一解决了. 自己的小demo也从一开始的1个扇区增加到了20几个扇区. 先上图做个标记,后面有时间再上代码.

  7. linux随机字符串

    pwgen  -s 32 1 openssl passwd -salt openssl rand -base64 32 openssl rand -hex 100

  8. BZOJ2534 Uva10829L-gap字符串 字符串 SA ST表

    原文链接https://www.cnblogs.com/zhouzhendong/p/9240665.html 题目传送门 - BZOJ2534 题意 有一种形如 $uvu$ 形式的字符串,其中 $u ...

  9. ORA-10858&colon;在要求输入数字处找到非数字字符

    今天在写sql语句的时候,运行报错:ORA-10858:在要求输入数字处找到非数字字符 在网上查了一下为什么会有这种错误,有一个建议是可能是写的sql语句中的日期没有处理.仔细看了一下自己写的代码 就 ...

  10. 使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址

    生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...