Mic*_*cky 4 arrays ajax jquery
嗨,我需要将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
}
});
Run Code Online (Sandbox Code Playgroud)
tft*_*ftd 27
如果我理解正确,您希望稍后在代码中重用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>
Run Code Online (Sandbox Code Playgroud)
你需要等待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>
Run Code Online (Sandbox Code Playgroud)
Alw*_*nny 14
您可以将ajax响应存储在全局数组中,以便在其他javascript函数中进一步使用
var ajaxResult=[];
$(document).ready(function(){
$.ajax({
url: 'ajaxload.php',
async:true,
dataType: "json",
success: function(data)
{
ajaxResult.push(data);
}
});
});
Run Code Online (Sandbox Code Playgroud)
otherJsfunc()
{
console.log(ajaxResult);
}
Run Code Online (Sandbox Code Playgroud)