2014-08-29 46 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); 
    } 

壞消息是同步的請求鎖定您的瀏覽器,直到它完成,這是一個良好的初步實踐,以避免這一點。