ajax嵌套ajax 可能出现问题 的解决办法

ajax由于他的异步特性 在第一次请求中的循环中嵌套第二个ajax会数据会读不出来

第一种

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

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

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

第二种

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

$.ajax({
        cache: false,
        type: ‘POST‘,
        url: url1,
        dataType: ‘json‘,
        success: function (data) {
            var list="";
            //用,做隔断发回后台用split取值
            for(var i=0;i<data.length-1;i++)
            {
                 list+= data[i].id;
                if (i != data.length - 1) {
                    list+= ",";
                }
            }

             $.ajax({
                cache: false,
                type: ‘POST‘,
                url:url2,
                data: { para: list},
                dataType: ‘json‘,
                success: function(result) {
                .......
                 }
             })
        }
})

  

优点:节省开销

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

第三种

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

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

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

时间: 2024-10-06 00:28:25

ajax嵌套ajax 可能出现问题 的解决办法的相关文章

Ajax回退刷新页面问题的解决办法

在脚本之家看到一篇文章,觉得以后可能会用上,但是竟然不能收藏,所以只能将其转到博客园. 以下是原文地址: http://www.jb51.net/article/87856.htm 这篇文章主要介绍了Ajax回退刷新页面问题的解决办法的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧 Ajax 简介: AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异

spring mvc ajax中文乱码的几种解决办法

使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的 ,研究了一下,有几种解决办法. 方法一: 在@RequestMapping里面加入produces = "text/html;charset=UTF-8" Java代码 @RequestMapping(value = "/configrole", method = RequestMethod.GET, produces = &quo

ScrollView嵌套Linearlayout显示不全的解决办法

以为ScrollView只能嵌套一个元素,所以把几个控件都包裹在了一个LinearLayout中了.但是发现底部显示不全,滑动不到最底下. 代码: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"

ajax json jQuery提示parsererror错误解决办法

1 $.ajax({ 2 type:'POST', 3 url:'<%=basePath%>/xxx.do', 4 dataType:'JSON', 5 data:{ 6 }, 12 success:function(data){ 15 $("#main").html(data.msg); 16 $("#PageContent").html(data.pagerHtml);19 }, 20 error: function(XMLHttpRequest,

ajax 跨域无法携带cookie 解决办法

ajax 跨域无法携带cookie,需要用到session,终于完美结局 xhrFields: { withCredentials: true }, 添加这个可能是大家都会做的一件事 但是添加上了之后就出现了另外一个问题 The 'Access-Control-Allow-Origin' header contains the invalid value 'Origin'. Origin ...... 2.服务器server端要配置Access-Control-Allow-Credentials

使用ajax请求后返回数据显示undefinded解决办法

今天在使用七牛的sdk做断点续传时候,当文件过大,本地没有存储时候,想要通过ajax将本地信息存到服务器缓存,之后通过读取缓存的方式来完成文件过大断点续传无法使用问题. 但是在使用ajax请求的时候,发现赋值和请求通过server端都能够请求到.但是请求显示的时候显示仍然是undefined.下面是自己的代码: //查询服务器是否有该值 function getLocalStorage(fileName){ $.ajax({ url : "/live/get-localStorage"

[转载]# Ajax异步请求阻塞情况的解决办法

最近使用ExtJs4的mvc模式在开发了在线漫画的后台,因为异步请求比较多,有的回应时间长,有点短.我发现在多次并发的情况下,会造成阻塞的情况.也就是说如果回应时间长的请求还在进行中,短的请求却被挂起. 找了很多资料,最终确定是asp.net session造成的.好像php也存在此类问题. 现象:在一个网站中,当访问一个处理比较耗时的页面(A页面),页面请求还没有返回时,此时再点击访问该网站的其他页面(B页面)会出现B页面很久都没有响应和返回,直到A页面输出返回数据时才开始处理B页面的请求,造

Ajax异步请求阻塞情况的解决办法

最近使用ExtJs4的mvc模式在开发了在线漫画的后台,因为异步请求比较多,有的回应时间长,有点短.我发现在多次并发的情况下,会造成阻塞的情况.也就是说如果回应时间长的请求还在进行中,短的请求却被挂起. 找了很多资料,最终确定是asp.net session造成的.好像php也存在此类问题. 现象:在一个网站中,当访问一个处理比较耗时的页面(A页面),页面请求还没有返回时,此时再点击访问该网站的其他页面(B页面)会出现B页面很久都没有响应和返回,直到A页面输出返回数据时才开始处理B页面的请求,造

Laravel ajax请求419错误及解决办法(CSRF验证) 阿星小栈

ajax请求报419 unknown status 解决办法1:将这个接口放到api路由上,这样可以跳过CSRF的检查 解决办法2: 1.在页面上添加 <meta name="csrf-token" content="{{ csrf_token() }}"> 2.然后在页面的script标签{{– 这句是废话,但是,啊我的博客好短不想删 – }}中添加 $.ajaxSetup({headers: {'X-CSRF-TOKEN': $('meta[name