aspx中:
function f1() {
 $.ajax({
        url: "xxx.ashx?action=....",
        type: "post",
        error: function () { alert('数据加载失败!'); },
        success: function (rs) {
            if (rs == "y") {
                window.xxx= true;
            }
            else {
                window.xxx= false;
            }
        }
    });
        alert(window.isHasClass);
    }ashx中: response.Write("....");
 response.End();
为什么执行的顺序是:
→  $.ajax({
→alert(window.isHasClass);
→response.Write("....");
→response.End();
→success: function (rs) {
→ if (rs == "y") {
。为什么 alert(window.isHasClass) 会比seccess:...  更优先执行?没按顺序来啊??

解决方案 »

  1.   

    因为JQuery中的Ajax是异步执行的
      

  2.   

    ajax是异步提交处理,提交后需要响应返回结果..
    你就当做再开一个线程执行代码
    alert是正常的代码执行 
    所以会比ajax快点
    所以你代码处理要在ajax success中处理 放外面处理调不到success的结果的 
      

  3.   

    ajax是异步执行,就好比一个人排队买票,前面还有老长老长的队伍,然后他找了一个人帮他排队,他自己去嘘嘘,然后回来了队伍的时候该他买票了。就这样理解一下。
      

  4.   

    Ajax有两种执行方式
    Jquery里面好像是没特别说明一般都是异步的。也就是说不按套路走。
    手写Ajax的JS部分就很容易明白了
    创建好xmlhttprequest对象之后,有个open的方法,3个参数
    第一个参数是明确传递的方式,是POST还是GET
    第二个参数就是你上面说的ASHX的URL
    第三个参数是指明异步还是同步,true就是异步,false就是同步。详细:http://blog.csdn.net/thinkpadleo/article/details/586267
      

  5.   


     async: false, //是否异步   默认为 true 
     error: function() { alert('数据加载失败!'); window.location = "ErrorPage.htm"; },
      

  6.   

    $.ajax 默认是异步执行了  程序执行到ajax时不会被阻塞,而会直接执行下去不过可以像LS所说的把ajax设为同步执行 async: false