JavaScript,Ajax,Json:如何使用一个值取决于json响应的变量?

Shi*_*har 0 javascript ajax json

为什么在第9行中定义的x未定义为第11行?

<script>
  var x;
  $.ajax({
    dataType: "json",
    url: myurl,
    success: function(data){
      console.log(data);
      x = data;
      document.write(x);
    }
  });
  document.write(x);
</script>
Run Code Online (Sandbox Code Playgroud)

Del*_*man 5

因为这里有异步行为.您的程序流程实际上是这样的:

1-你宣布x

2-您发出ajax请求

3-您将x写入文档(此时,x没有值)

4- ajax请求获得响应,并将x的值设置为该响应并将其写入文档.

你的问题不是范围问题,而是时间问题.