zoukankan      html  css  js  c++  java
  • 如何处理ajax中嵌套一个ajax

    第一种

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

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

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

    第二种

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

    复制代码
     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请求将整个浏览器锁死,直到请求结束

    复制代码
     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 })
    复制代码

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

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

  • 相关阅读:
    ios修改了coredata数据结构后,更新安装会闪退
    iOS开发系列--UITableView全面解析
    iOS七种手势
    iOS 手势操作:拖动、捏合、旋转、点按、长按、轻扫、自定义
    iOS学习必须了解的七大手势
    iOS中respondsToSelector与conformsToProtocol的相关理解和使用
    iOS-MBProgressHUD使用
    ios学习--第三方框架-MBProgressHUD以及扩展
    Problem 2169 shadow
    測试加入多级文件夹篇
  • 原文地址:https://www.cnblogs.com/ziyoublog/p/9448892.html
Copyright © 2011-2022 走看看