Javascript $.ajax成功范围是如何工作的?
考虑到响应是将值分配给在其作用域之外声明的变量,为什么响应没有存储在成功作用域之外?第二个console.log在成功函数的第一个console.log之前执行,因为ajax是一个异步过程。您要么需要使用回调函数来确保在ajax调用后执行第二个console.log,要么可以使用让我们看看您的代码在做什么Javascript $.ajax成功范围是如何工作的?,javascript,jquery,ajax,xml,Javascript,Jquery,Ajax,Xml,考虑到响应是将值分配给在其作用域之外声明的变量,为什么响应没有存储在成功作用域之外?第二个console.log在成功函数的第一个console.log之前执行,因为ajax是一个异步过程。您要么需要使用回调函数来确保在ajax调用后执行第二个console.log,要么可以使用让我们看看您的代码在做什么 声明变量myXML(=null) 启动美元.ajax请求(并声明如果它最终在将来某个时候成功完成该怎么办) 记录myXML的内容 请注意,除非在第3点之前调用success回调。(这是极不可能
myXML
(=null)myXML的内容
success
回调。(这是极不可能的),myXML
此时仍将是null
换句话说,当调用回调时,
myXML
将被更新。在此之前,它是您在第1点中声明的内容,即null
。代码完全按照您的要求执行,但它不是您想要的。$。ajax
发出异步请求,以便在/1
之前执行/2
。在成功之前,您应该能够看到结果=未定义的在控制台中我确实在控制台中看到了,现在我明白了!在我看来,javascript必须等待调用完成,然后才能在代码中按顺序进行,谢谢@对不起,在我回答之前,我没有看到你的评论
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);