Efe*_*Efe 0 javascript ajax jquery
我知道这个问题已被问过百万次,所以我很抱歉.
我查看了所有其他示例,我不明白为什么以下代码现在不起作用.
当我将它放在CheckinMap函数之外时,我得到未定义的警告框.
为什么?
$(document).ready(function() {
var MapData;
$(function CheckinMap() {
$.ajax({
type: "GET",
url: "content/home/index.cs.asp?Process=ViewCheckinMap",
success: function (data) {
MapData = data;
},
error: function (data) {
$("#checkinmap").append(data);
}
});
});
alert(MapData);
});
Run Code Online (Sandbox Code Playgroud)
MapData未定义,因为在alertajax调用仍在运行时执行(ajax是异步的)并且响应尚不可用.所以以这种方式改变你的代码
success: function (data) {
MapData = data;
alert(MapData);
},
Run Code Online (Sandbox Code Playgroud)
或继续调用另一个函数的代码执行
success: function (data) {
continueExecution(data)
},
...
function continueExecution(data) {
alert(data)
}
Run Code Online (Sandbox Code Playgroud)
或使用延迟对象(在jQuery 1.5+上)
$.ajax({
type: "GET",
url: "content/home/index.cs.asp?Process=ViewCheckinMap"
})
.done(function(data) { alert(data) })
Run Code Online (Sandbox Code Playgroud)