javascript - 无法访问 $.ajax.done() 中的全局变量

标签 javascript jquery ajax

我试图通过innerHTML打印一些通过ajax调用获得的数据,但是全局数组元素在done() promise 中是不可访问的。它确实是未定义的。 为什么会发生这种情况?

<html>
<head></head>
<body>
    <script src ="jquery.min.js"></script>
    <script>
        $(document).ready(function(){
            var elements = document.getElementsByClassName("wind");

            for(i=0;i<elements.length;i=i+1){

                $.ajax({
                    type:"GET",
                    url:"http://api.openweathermap.org/data/2.5/weather?q="+elements[i].innerHTML+"&appid=7876b25bdca1397553df39ef3ea05fd1",
                    dataType: "json"
                }).done(function(data){
                    elements[i].innerHTML = data.wind.speed; //elements[i] is undefined
                });

                //elements[i].innerHTML     here elements[i] is OK but I don't have access to "data"

            }

        });
    </script>

    <div class="wind">Venice,it</div>
    <div class="wind">Rome,it</div>

</body>

最佳答案

尝试使用success 设置而不是done。当请求成功并返回数据时,这将激活。

$.ajax({
    type:"GET",
    url:"http://api.openweathermap.org/data/2.5/weather?q="+elements[i].innerHTML+"&appid=7876b25bdca1397553df39ef3ea05fd1",
    dataType: "json",
    success: (function(data){
        elements[i].innerHTML = data.wind.speed; 
    }),
});  

关于javascript - 无法访问 $.ajax.done() 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43720648/

相关文章:

javascript - Ajax 到 php 并存储在数据库中

javascript - 动态 ajax 表单选择框自动填充

javascript - 在服务器端实现 webrtc

javascript - Dojo 多个带有下拉按钮的非模式对话框

javascript - 带连字符的 Jquery 表排序器数字

javascript - 使用变量从 JSON 对象获取值

javascript - JQuery Mobile Listview 元素消失

javascript - 根据字体大小在 Canvas 中垂直居中文本

javascript - 通过 jQuery 或 Javascript 应用于父窗口的外部 css 规则

javascript - 关于jquery ajax,php文件已运行但成功功能不起作用