<转>ajax 同步异步问题

本文深入解析了jQuery中AJAX的异步与同步特性,阐述了它们的工作原理及对网页性能的影响。异步模式下,AJAX请求与页面其他操作并行,提升用户体验;而同步模式则会阻塞页面,直至请求完成。通过具体代码示例,对比了两种模式下页面行为的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:https://blog.youkuaiyun.com/wxr15732623310/article/details/76387787 

 

看似简单明白的问题说起来却迷迷糊糊,完全没有逻辑,说不到重点上,再来整理思路,去真正搞明白。


$.ajax({
type: "post",

url: "path",

cache:false,

async:false,

dataType: ($.browser.msie) ? "text" : "xml",

success: function(xmlobj){
}
});
   很熟悉的一段代码,异步和同步体现在哪里?他们有什么区别?


jquery的async属性:默认情况下是true,表示异步,如果是false,表示同步。

 

同步:当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个ajax执行完毕后才会继续运行其他代码,页面假死状态消失。

 

异步:当ajax发送请求后,在等在server端返回的这个过程中,前台会会继续执行ajax块后面的脚本,直到server端返回正常的结果才会执行success,这时候执行的是两个线程,ajax块发出请求后一个线程和ajax块后面脚本(另一个线程)


$.ajax({
type:"POST",
url:"Venue.aspx?act=init",
dataType:"html",
success:function(result){ //function1()
f1();
f2();
}
failure:function (result) {
alert('Failed');
},
}
function2();

            ajax发出请求后,停留在function1等待server返回,同时前台会执行function2(),这个时候出现两个线程。
   当async为false时,ajax请求就是同步的,ajax发送请求后,会等待function1,不会执行下面内容,直到function1执行完毕。
---------------------



转载于:https://www.cnblogs.com/zhangxiaoxia/p/9811033.html

### 实现方案 为了在现有 HTML 代码中的通用设置部分添加一个表单并通过 POST 方法向 `/setDeviceIp` 发送请求,可以通过以下方式完成: #### 添加表单结构 在 HTML 中定义一个 `<form>` 元素,并将其 `method` 属性设为 `"POST"`,同时将 `action` 属性指向目标 URL (`/setDeviceIp`)。 以下是完整的表单代码示例: ```html <form id="deviceIpForm" action="/setDeviceIp" method="POST"> <label for="ipAddress">设备 IP 地址:</label> <input type="text" id="ipAddress" name="ipAddress" required /> <button type="submit">保存</button> </form> ``` 在此代码中: - 使用了一个输入框来接收用户输入的设备 IP 地址。 - 提交按钮用于触发表单提交行为。 - 设置了 `required` 属性以确保用户必须填写该字段才能提交表单[^1]。 #### 处理 JavaScript 动态交互 (可选) 如果希望增强用户体验或者验证数据有效性,则可以在前端加入一些简单的 JavaScript 来控制表单的行为。例如,在提交之前确认用户的输入是否合法。 下面是一个基本的例子展示如何利用 JavaScript 验证并阻止非法提交: ```javascript document.getElementById('deviceIpForm').addEventListener('submit', function(event){ const ipAddressInput = document.getElementById('ipAddress'); let isValidIpAddress = validateIP(ipAddressInput.value); if (!isValidIpAddress) { event.preventDefault(); alert("请输入有效的IPv4地址!"); } }); function validateIP(ipaddress) { const ipPattern = /^(?:(?:\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])$/; return ipPattern.test(ipaddress); } ``` 此脚本实现了两个功能: 1. 当点击“保存”按钮时会调用事件监听器检查输入的有效性; 2. 如果检测到错误则显示警告消息并且停止默认动作即不发送请求[^2]。 另外需要注意的是,当使用 AJAX 或者其他异步技术代替传统同步形式提交时,记得调整 Content-Type 和实际传输的数据格式以便于服务端解析正确的内容类型[^4]。 以上就是在已有HTML基础上增加支持POST请求的功能的方法说明以及相应实现细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值