<script >
           var CustomersData =null;
           $.ajax({
               type: 'GET',   
               url: 'ashx/Handler.ashx',  
               dataType: 'json',  
               data: 'type=1', 
               success: function (msg) {
                   CustomersData = msg;//这里alert(CustomersData );可以取到值
               },  //成功时的处理           
               error: function (data) { alert(data); }  //失败时的处理
           });
        alert(CustomersData );//这里就是null,我想在这里取到值,求大神指点啊,我不太了解JQuery
         
       </script>

解决方案 »

  1.   

    所谓异步ajax,就是不阻塞js主线程发起的XMLHttpRequest请求。
    代码$.ajax({...})并不是马上发起异步请求,要等待当前运行的js空闲下来才会发起的。
    所以,按时间线来看,alert(CustomersData)的运行要早于success中的CustomersData = msg这一句,因此CustomersData自然是null,无疑。
      

  2.   

     var CustomersData =null;
               $.ajax({
                   type: 'GET',   
                   async: false,  /////////改为同步就没问题了
                   url: 'ashx/Handler.ashx',  
                   dataType: 'json',  
                   data: 'type=1', 
                   success: function (msg) {
                       CustomersData = msg;//这里alert(CustomersData );可以取到值
                   },  //成功时的处理           
                   error: function (data) { alert(data); }  //失败时的处理
               });
            alert(CustomersData );//这里就是null,我想在这里取到值,求大神指点啊,我不太了解JQuery
      

  3.   

    success是callback 当然有值了, 你如果希望是直接取到值,自然得同步方式了楼上几位说得也没错啊......
      

  4.   

    jq无非就是在xmlhttp上封装了一层简要的方案这个是外观模式....
      

  5.   


    var CustomersData =null;
               $.ajax({
                   type: 'GET',   
                   url: 'ashx/Handler.ashx',  
                   dataType: 'json',  
                   data: 'type=1', 
                   success: function (msg) {
                       CustomersData = msg;//这里alert(CustomersData );可以取到值
                   },  //成功时的处理           
                   error: function (data) { alert(data); }  //失败时的处理
               });
    function show(){
    if(CustomersData !== null){
    clearInterval(timer);
    alert(CustomersData);
    }
    }
    var timer = setInterval(show,500);
      

  6.   

    async: false,  /////////改为同步就没问题了---------------------
    给你的建议是,改成同步的吧。
      

  7.   

    1。Jquery 什么版本
    2。用必杀$.ajax({
           ...,
            statusCode: {
                200: function () {             },...         
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                AjaxError(XMLHttpRequest, textStatus, errorThrown);
            }
        });