Ajaxレスポンス配列を変数に格納し、後で利用できるようにする。

こんにちは、私はAJAXの応答を2つの変数xとyまたは配列に格納する必要があります。 私のAJAX応答は配列です。私はデータを見ることができますが、cheコールにアラートと一緒にだけです。 私は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
    }
});
ソリューション

私の理解が正しければ、あなたはコード内で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>
解説 (4)

変数を宣言すれば、ajaxの外側からその値にアクセスすることができます。

例えば

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

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

Ajax がうまく動けば、変数 xy にグローバルにアクセスすることができます。

解説 (0)

このコードをドキュメントレディハンドラ内で実行している場合、xとyの変数は真にグローバルなものではありません。window.x=''; window.y='';` を試してみてください。

解説 (0)