将ajax响应数组存储到变量中以供以后使用

时间:2012-10-22 12:17:39

标签: jquery ajax arrays

您好我需要将AJAX响应存储到两个变量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
    }
});

4 个答案:

答案 0 :(得分:25)

如果我理解正确,您希望稍后在代码中重用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>

答案 1 :(得分:12)

您可以将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 :(得分:0)

如果您对变量进行十分转换,则可以访问ajax的值out。

例如:

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

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

如果ajax运行良好,你可以访问变量 x y globaly

答案 3 :(得分:0)

如果您在文档就绪处理程序中运行此代码,则您的x和y变量不是真正的全局变量。试试window.x=''; window.y='';