var myXML;
$.ajax({
type:'GET',
url:'http://localhost:8080/someCGIhere/',
datatype:'xml',
success: function(xml){
console.log('Success!');
myXML = $(xml).find('SomeThing').text();
//1) Prints out the myXML value
console.log("myXML = " +myXML);
}
});
//2) Prints out undefined
console.log('Result = '+myXML);
为什么响应不存储在成功范围之外,考虑到它是将值赋给在其范围之外声明的变量?
答案 0 :(得分:2)
第二个console.log在success函数中的第一个之前执行,因为ajax是一个异步进程。您需要使用回调函数来确保在ajax调用之后执行第二个console.log,或者您可以使用promises
答案 1 :(得分:1)
让我们看看你的代码在做什么。
myXML
(= null)myXML
请注意,除非在第3点之前调用success
回调(极不太可能),myXML
在此时仍为null
。
换句话说,当调用回调时,myXML
将被更新。在此之前,这是你在第1点声明的内容,即null
。代码完全符合您的要求,但它不是您想要的东西。