javascript - 如何同时发起两个ajax请求不互相影响?

查看:126
本文介绍了javascript - 如何同时发起两个ajax请求不互相影响?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

再页面上写了一个ajax函数fun(query),只需要传入查询字符串就可以发起请求,其它的url等等条件都是一样的。
那么问题来了,这时候页面上有两个地方需要发起ajax请求,拿到数据渲染页面,于是调用这个函数发起请求:

  • fun(query1);

  • fun(query2);

那么这时这两个ajax可不可以可以分辨得出来那个返回的数据时自己所发起的请求返回的?因为ajax时异步请求嘛,哪个请求返回的数据也并不一定?如果真的有混乱对的可能,那么一般的解决方案有哪些?

补充:我想实现的是页面加载的时候有两个地方自动从服务器获取数据渲染页面,所以这两个请求页面加载的时候就会自动触发了,请求1和2的数据哪个先返回是不确定的,有可能请求1的数据先返回,也有可能请求2的数据先返回。我就怕请求1的回调函数获取到了请求2的数据,请求2获取了请求1的数据,因为我也没看到程序做了什么事情来确定得到的数据就是自己所发起的请求所返回的

解决方案

为什么要去分辨?按照常理,不同的请求会被绑定到不同的行为中,即使他们调用的是同一函数.比如有个按钮A叫查询姓名,有个按钮B叫查询年龄,你封装了一个函数,只要传参数就能对应去获取数据.那么你在A绑定点击事件的时候传的回调函数和在B绑定点击事件传的回调肯定是不一样的啊。


function fun(query){}

$('#queryName').on('click', fun({queryCondition: {xx: ['name']}, callback: function(){逻辑A}}))

$('#queryAge').on('click', fun({queryCondition: {xx: ['age']}, callback: function(){逻辑B}}))

或者你fun里面返回一个jqxhr对象也行,那么你就可以写成
$('#queryName').on('click', fun({queryCondition: {xx: ['name']}}))
.done(function(){逻辑A});

$('#queryAge').on('click', fun({queryCondition: {xx: ['age']}}))
.done(function(){逻辑B}});

这篇关于javascript - 如何同时发起两个ajax请求不互相影响?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆