如何处理ajax中嵌套一个ajax

摘要:
第一个描述:如果条件允许,将这两个请求放在服务器上,然后一起发送。客户端只有一个ajax。优点:代码放在服务器端,安全性比较,服务器端处理速度快。缺点:请求的数据格式可能是json,因此在服务器端处理json数据时,需要反序列化json,这很麻烦。第二个描述:这是我第一次用这种愚蠢的方法来解决这个问题。第一次向公共变量请求Ajax时,循环值PUSH,然后使用公共变量作为请求的参数

第一种

描述:如果条件许可,把两次请求都放在服务端处理掉一起发回来,这些就在客户端只有一次ajax了

优点:代码放在服务端,安全性比较,且服务端处理速度较快

缺点:可能请求的数据格式是json,这样在服务端处理JSON数据还需要对JSON进行反序列化,这样就比较麻烦

第二种

描述:是我第一次解决这个问题的时候用的比较蠢的办法,第一次请求的ajax,循环值PUSH到公共变量中去,然后用这个公共变量作为参数去请求第二个ajax

如何处理ajax中嵌套一个ajax第1张
复制代码
 1  $.ajax({
 2         cache: false,
 3         type: 'POST',
 4         url: url1,
 5         dataType: 'json',
 6         success: function (data) {
 7             var list="";
 8             //用,做隔断发回后台用split取值
 9             for(var i=0;i<data.length-1;i++)
10             {
11                  list+= data[i].id;
12                 if (i != data.length - 1) {
13                     list+= ",";
14                 }
15             }
16             
17              $.ajax({
18                 cache: false,
19                 type: 'POST',
20                 url:url2,
21                 data: { para: list},
22                 dataType: 'json',
23                 success: function(result) {
24                 .......
25                  }
26              })
27         }
28 })            
复制代码

优点:节省开销

缺点:这样写的确有点蠢...除了蠢之外 我再补充一点 这样做第二次ajax只能是自己去请求自己服务器,如果是别人的服务 不可能给你拆分参数

第三种

描述:使用async :false。ajax默认async是为ture的,当async: true 时,ajax请求是异步的。但是其中有个问题:ajax请求和其后面的操作是异步执行的,那么当页面还未执行完,就可能已经执行了 ajax请求后面的操作。当async:false时,ajax请求为同步,这时Ajax请求将整个浏览器锁死,直到请求结束

如何处理ajax中嵌套一个ajax第1张
复制代码
 1 $.ajax({
 2         cache: false,
 3         type: 'POST',
 4         url: url1,
 5         async: false,
 6         dataType: 'json',
 7         success: function (result) {
 8               for(var i=0;i<result.length-1;i++)
 9              {
10                   $.ajax({
11                       cache: false,
12                       type: 'POST',
13                       url: url2,
14                       async: false,
15                       dataType: 'json',
16                       success: function (data) {
17                       ...
18                       }
19                 });
20                }
21          }
22 })
复制代码

优点:可以按照逻辑顺序正常的写代码

缺点:同步时整个页面是被锁死的

免责声明:文章转载自《如何处理ajax中嵌套一个ajax》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ffmpeg简介在java项目中使用AES256 CBC加密下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET AJAX简述

(注:该内容来源于MSDN WebCast,仅作为个人学习笔记,如有任何错误,望指正) AJAX应用 ——异步,异步发出HTTP请求(XMLHttpRequest) ——页面部分刷新 ——减少数据传输量 ——提高用户体验 ASP.NET的AJAx的实现 ——与ASP.NET 2.0无缝集成(当前4.0版本更不用说了) ——轻易添加AJAX效果 ——以服务端...

使用AJAX技术发送异步请求,HTTP服务端推送 --

使用AJAX技术发送异步请求 什么是AJAX AJAX指一步Javascript和XML(Asynchronous JavaScript And XML),它是一些列技术的组合,简单来说AJAX基于XMLHttpRequest让我们在不重载页面的情况下和服务器进行数据交换。 加上JavaScript和DOM(Document Object Model,文档...

form表单提交的几种方式

表单提交方式一:直接利用form表单提交(主线程提交) html页面代码: 1.提交普通内容: 1 <body> 2 <form action="http://localhost:8080/user" method="post"> 3 username:<input type="text" name="username...

struts 2 时间控件

在使用struts2框架时,为我们提供了时间选择器控件:datetimepicker。但是在使用过程中会出现一些问题,主要就是struts2版本更新时做了一些修改。在struts2.0时,使用<s:datetimepicker/>时,需要在<head></head>标签中申明:<s:head theme="ajax...

jquery参考手册

jQuery 选择器 选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") 的元素 .class $(".intro") 的所有元素 .class,.class $(".intro,.demo") class 为 "intro" 或 "demo" 的所有元素 element $("p")...

javascript流行框架

1. jQuery – Javascript框架 应用最广泛的JavaScript框架,jQuery插件非常之多,涉及LightBox灯箱插件、日期插件、图表插件等各种类型的插件不计其数,OsChina就收录了1000多款jQuery插件。 2. Dojo Javascript框架 Dojo是一个强大的面向对象JavaScript框架。主要由三大模块组成:C...