我对我的服务器进行ajax调用以检索一些记录并将它们作为JSON对象返回。 这是电话的代码
$(".reply").click(function (){
$.ajax({
url: "/ajax_up/",
type: 'GET',
dataType: "json",
success: function (data) {
sync_data=JSON.stringify(data)
}
});
我试图使用返回的数据来构造网格,所以当我传递我在Ajax调用中声明为global的变量syncd_data时,它似乎未定义。
$(document).ready(function(){
var data = source_data;
//other code
..........................
..........................
但是当我在ajax调用中发出警报(sync_data)时如下:
$(".reply").click(function (){
$.ajax({
url: "/ajax_up/",
type: 'GET',
dataType: "json",
success: function (data) {
sync_data=JSON.stringify(data)
}
});
它正确显示数据。 我可以在Ajax调用之外使用这些数据吗? 任何帮助见解或示例将受到高度赞赏。 感谢
答案 0 :(得分:1)
您需要确保在ajax调用的成功回调中调用该函数:
success: function (data) {
sync_data=JSON.stringify(data);
doSomething(sync_data);
}
这是因为AJAX是异步的,您需要在继续下一个事件之前确保您的呼叫已完成且成功。即使变量被声明为全局变量。
<强>更新强>
var sync_data;
$(document).ready(function(){
$.ajax({
url: "/ajax_up/",
type: 'GET',
dataType: "json",
success: function (data) {
sync_data=JSON.stringify(data);
}
});
});
这样,从AJAX请求返回后,您将确保sync_data
在技术上填充在document.ready
中。你现在可以在任何地方使用它。
答案 1 :(得分:0)
在您的ajax调用之前添加var sync_data = ""
。在你的ajax调用之后,你可以通过alert(sync_data);
通过在ajax调用之前添加变量使其可以使用ajax调用