Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.ajax成功范围是如何工作的?_Javascript_Jquery_Ajax_Xml - Fatal编程技术网

Javascript $.ajax成功范围是如何工作的?

Javascript $.ajax成功范围是如何工作的?,javascript,jquery,ajax,xml,Javascript,Jquery,Ajax,Xml,考虑到响应是将值分配给在其作用域之外声明的变量,为什么响应没有存储在成功作用域之外?第二个console.log在成功函数的第一个console.log之前执行,因为ajax是一个异步过程。您要么需要使用回调函数来确保在ajax调用后执行第二个console.log,要么可以使用让我们看看您的代码在做什么 声明变量myXML(=null) 启动美元.ajax请求(并声明如果它最终在将来某个时候成功完成该怎么办) 记录myXML的内容 请注意,除非在第3点之前调用success回调。(这是极不可能

考虑到响应是将值分配给在其作用域之外声明的变量,为什么响应没有存储在成功作用域之外?

第二个console.log在成功函数的第一个console.log之前执行,因为ajax是一个异步过程。您要么需要使用回调函数来确保在ajax调用后执行第二个console.log,要么可以使用

让我们看看您的代码在做什么

  • 声明变量
    myXML
    (=null)
  • 启动美元.ajax请求(并声明如果它最终在将来某个时候成功完成该怎么办)
  • 记录
    myXML的内容
  • 请注意,除非在第3点之前调用
    success
    回调。(这是极不可能的),
    myXML
    此时仍将是
    null


    换句话说,当调用回调时,
    myXML
    将被更新。在此之前,它是您在第1点中声明的内容,即
    null
    。代码完全按照您的要求执行,但它不是您想要的。

    $。ajax
    发出异步请求,以便在
    /1
    之前执行
    /2
    。在
    成功之前,您应该能够看到
    结果=未定义的
    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);