2014-08-29 47 views
-1

我有一个ajax函数调用,其值为5的可变总和。但是,当我尝试访问这个变量之外的ajax函数调用,获取空值。 有没有办法访问ajax函数外的值?如何检索ajax调用之外的变量值?

  $.ajax({ 
      type: "POST", 
      url: "Service.asmx/chart", 
      data: appid, 
      success: function(data) { 
      var mydata = 5;  
       } 
      }); 
      alert(mydata); 
+0

哪里是...? – 2014-08-29 07:16:39

+0

对不起,这里考虑一下变量mydata。我不能在这种情况下检索它的值在ajax – user3564495 2014-08-29 08:33:18

回答

0

那么这是不可能的,因为Ajax请求是异步的,并且当Ajax请求是发送JavaScript执行移到下一行之后该请求是发送。

在请求作为被发送到URL,作为变量尚未确定

你应该javscript将移至alert(mydata),因为请求尚未完成,你会得到undefined后,你的情况做的是

 $.ajax({ 
     type: "POST", 
     url: "Service.asmx/chart", 
     data: appid, 
     success: afterAjaxRequest 
     }); 


    function afterAjaxRequest(data){ 
     alert(data); // no we are 100% sure that ajax request has completed and we have got the data 
    } 
+0

之外,我在哪里初始化“数据”的值? – user3564495 2014-08-29 08:35:16

+0

这些数据不会初始化,并会通过成功ajax回调传递,在'afterAjaxRequest'函数内调用您的工作登录 – sanjeev 2014-08-29 09:07:34

0

试试这个:

$.ajax({ 
     type: "POST", 
     url: "Service.asmx/chart", 
     data: appid, 
     success: function(data) { 
     doGetMyData(data); 
      } 
     }); 
     function doGetMyData(data){ 
     alert(data); 

}

0

AJAX中的第一个“A”表示异步,所以您的代码在请求完成之前运行警报。为了达到你想要的目标,你可以尝试让你的要求的同步增加异步:假选项查询:

$.ajax({ 
    type: "POST", 
    url: "Service.asmx/chart", 
    data: appid, 
    async:false, 
    success: function(data) { 
    doGetMyData(data); 
     } 
    }); 
    function doGetMyData(data){ 
     alert(data); 
    } 

坏消息是同步的请求锁定您的浏览器,直到它完成,这是一个良好的初步实践,以避免这一点。