Jquery 将ajax响应数组存储到变量中以供以后使用
嗨,我需要将AJAX响应存储到两个变量x和y或数组中。 我的AJAX响应是一个数组。我可以看到数据,但只能通过和警报进入che呼叫。 我需要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 + "
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工作正常,则可以访问变量x和yglobaly如果在文档就绪处理程序中运行此代码,则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);
}