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

Jquery 将ajax响应数组存储到变量中以供以后使用,jquery,ajax,arrays,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 + "

嗨,我需要将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
    }
});

如果您是变量,则可以访问ajax外部的值

例如:


var x=“”;
变量y=“”;
函数sendAjax()
{
//您的ajax调用
x=data.posX;
y=data.posX;
} 
sendAjax();

如果ajax工作正常,则可以访问变量xyglobaly

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

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

$(文档).ready(函数(){
var x;
变量y;
$.ajax({
url:'ajaxload.php',
数据类型:“json”,
成功:函数(数据){
x=data.posX;
y=data.posX;
警报(x+“”+y);//我可以读取数据,但需要外部ajax调用
}
});
警报(x+“”+y);//您将看不到任何内容,因为此数据尚未填充。原因是,当ajax请求完成(它已收到响应)时,会调用“success”函数。
})
您需要等待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>

$(文档).ready(函数(){
var data=$.parseJSON($.ajax({
url:'ajaxload.php',
数据类型:“json”,
异步:false
}).responseText);//这将等待从ajax请求获得响应。
//现在,您可以在以后的代码中使用data.posX、data.posY,这样就可以了。
var x=data.posX;
var y=data.posY;
警报(x+“”+y);
警报(data.posX+“”+data.posY);
});

您可以将ajax响应存储在全局数组中,以便在其他javascript函数中进一步使用

var ajaxResult=[];

$(document).ready(function(){

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


你是说
window.x
window.y
?这应该真的有效,你是否尝试过在ajax函数之外发出警报,而且你缺少
})在最后一行,这也可能是问题所在啊哈,对不起,我更正了});丢失的我准备好了x e y值,我将通过php从数据库中获取它。拥有全局变量通常不是实现所需的最佳方式,在这种情况下,当变量未初始化时,或者它包含您不期望的值时,很可能最终会使用变量。您应该将
data.PosX
data.PosY
传递到AJAX调用完成后要执行的另一个函数中。我很高兴能提供帮助。如果这就是你想要的,请在我的帖子上注明答案:)谢谢!终于成功了!对我来说什么都不管用,但这确实管用!谢谢您好,只是为了理解:我认为Ajax异步的性质。假设我不想使用“async:false”,那么全局变量是唯一的解决方案?或者是否有一种方法可以在另一个脚本中“设置”变量值,但稍后再运行它。希望你明白我的意思。在我的例子中,我有两个表单和一个通过提交第一个表单返回的变量,必须在第二个表单的隐藏输入字段中使用。但正如您所猜测的,第二份表格将在稍后提交。谢谢你的暗示。这应该是最好的答案。谢谢这正是我想要的。
var ajaxResult=[];

$(document).ready(function(){

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