我现在有五个Ajax,
function MutipulyInvoke()
{
$.ajax({success:function(){}});
$.ajax({success:function(){}});
$.ajax({success:function(){}});
$.ajax({success:function(){}});
$.ajax({success:function(){}});
}
现在出现的一个问题就是:我第二个Ajax必须要请到第一个请求完成,它才会执行!!
理论上不应该如此吧!!因为这几个请求的周期不一样!!第一个要3秒,第二个只要0.1秒!!
第三个只需要5秒等等!!应该是哪个成功先执行哪个吧!!但是实际情况却是先等到第一个成功后才执行第二个!!
不知道你用的什么浏览器做的开发的。
如果用火狐那么请下载一个firebug,打开控制台面板,然后刷新你的页面,看看这些ajax的请求到底是怎么执行的。
如果用谷歌那么直接Ctrl+Alt+J,打开Network面板,然后刷新你的页面,看看这些ajax的请求到底是怎么执行的。
如果你用IE请无视我。
哥哥!!
看到没……!它是等到第一个结果调用后才去调用第二个的!!
第一个请求默认为五秒!而第二个却只有0.01秒!!
但是却非要等 到第一个调用完成后,才去调用第二个!!
我不是你哥哥,麻烦你测试以下代码。
<script type="text/javascript" language="javascript"> $(function () { $.get("Handler/Handler1.ashx", function (result) { alert(result); }); $.get("Handler/Handler2.ashx", function (result) { alert(result); }); }); </script>
public class Handler1 : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; System.Threading.Thread.Sleep(1000 * 5); context.Response.Write("Handler1"); } public bool IsReusable { get { return false; } } }
public class Handler2 : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("Handler2"); } public bool IsReusable { get { return false; } } }
你的为什么就可以!!!
我的代码为什么就不可以呢???!
$.ajax();和$.get();不一样么???求解答!!!
$.get()是对$.ajax()的封装。
$(function () { $.ajax({ "url": "Handler/Handler1.ashx", "success": function (result) { alert(result); } }); $.ajax({ "url": "Handler/Handler2.ashx", "success": function (result) { alert(result); } }); //$.get("Handler/Handler1.ashx", function (result) { // alert(result); //}); //$.get("Handler/Handler2.ashx", function (result) { // alert(result); //}); });
如果不这样,我觉得还不正常了
回调函数的意思不应该是“成功了就通知我么”,那照理说应该是哪个成功了,或者失败了就优先通知道我啊……
如果是同一個 域名下的操作,應該是這樣的。你可以跨域實現,就是要把文件放到不同的域名下
启用异步加载,手动的将那个配置给加上看看
什么意思??
你的意思就是说:asyc:true?
默认的不就是true么?……
没怎么用过JQUERY,从你的问题描述来看,$.ajas应该是同步函数,只有方法执行完成后才会返回,所以就有了你这样的结果。
要实现同步调用还是有一定的难度的,JQUERY的作者高手!
建议你检查看JQUERY是否有一个异步的AJAX调用方法,要达到你的目的,使用异步调用就可以了,或者就干脆自己写,默认情况下肯定是异步的。
我也遇到这个问题了,我是用的jquery form提交表单,要等ajaxSubmit执行完后 才执行其它ajax请求 郁闷中