2012-10-22 50 views
3

嗨我需要將AJAX響應存儲到兩個變量x和y或數組中。 我的AJAX響應是一個數組。我能夠看到數據,但只能通過並警惕進入呼叫。 我需要的數據在Ajax調用將ajax響應數組存儲到變量中以備後用

var x; 
var y; 

$.ajax({ 
    url: 'ajaxload.php', 
    dataType: "json", 
    success: function (data) { 
     x = data.posX; 
     y = data.posX; 
     alert(x + " " + y); // I can se data but I need outside ajax call 
    } 
}); 
+0

你的意思是'window.x'和'window.y'? – Touki

+1

這應該真的有效,你有沒有試過在ajax功能之外發出警報,你也缺少'});'在最後一行,這可能是問題以及 – Linas

+0

ahha對不起,我正確});失蹤。我已經有了x值,我將通過php從數據庫中獲取它。 – Micky

回答

17

如果我理解正確,您希望稍後在您的代碼中重用ajax響應。 如果是這樣,您當前的代碼將無法工作,因爲默認情況下,JavaScript引擎不會等待ajax請求的響應。換句話說下面的代碼將不起作用:

<script type="text/javascript"> 
$(document).ready(function(){ 
    var x; 
    var y; 
    $.ajax({ 
     url: 'ajaxload.php', 
     dataType: "json", 
     success: function(data) { 
      x= data.posX; 
      y= data.posX; 
      alert (x+" "+y); // I can se data but I need outside ajax call 
     } 
    }); 
    alert(x+" "+y); // You won't see anything, because this data isn't yet populated. The reason for this is, the "success" function is called when the ajax request has finished (it has received a response). 
}) 
</script> 

您需要等待ajax響應。要做到這一點與jQuery你需要稍微修改代碼:

<script type="text/javascript"> 
$(document).ready(function(){ 
    var data = $.parseJSON($.ajax({ 
     url: 'ajaxload.php', 
     dataType: "json", 
     async: false 
    }).responseText); // This will wait until you get a response from the ajax request. 

    // Now you can use data.posX, data.posY later in your code and it will work. 
    var x = data.posX; 
    var y = data.posY; 
    alert(x+" "+y); 
    alert(data.posX+" "+data.posY); 
}); 
</script> 
+0

Yesss^___ ^謝謝:) – Micky

+0

我很高興能幫上忙。如果這是你正在尋找的,請將我的帖子標記爲答案:) – tftd

+0

謝謝你!最後作品!沒有爲我工作,但這是!謝謝! – Refilon

0

外,如果你decalre的變量,你可以進出值AJAX的一面。

如:

<script type="text/javascript"> 
    var x = ''; 
    var y = ''; 

    function sendAjax() 
    { 
     // your ajax call 
     x= data.posX; 
     y= data.posX; 
    } 
    sendAjax(); 
</script> 

如果Ajax的工作原理好,你可以存取權限的變量Xÿ globaly

0

如果你正在運行的文件準備好處理程序中的代碼,你的X和y變量不是真正的全球性。嘗試window.x=''; window.y='';

8

可以存儲在進一步使用全局數組Ajax響應其他javascript函數

var ajaxResult=[]; 

$(document).ready(function(){ 

    $.ajax({ 
    url: 'ajaxload.php', 
    async:true, 
    dataType: "json", 
    success: function(data) 
    { 
     ajaxResult.push(data); 
    } 
    }); 
}); 

otherJsfunc() 
{ 
    console.log(ajaxResult); 
} 
+2

這應該是最好的答案。謝謝! – Gixty

相關問題