javascript - 无法为变量设置新值

标签 javascript jquery ajax json variables

我可能遗漏了一些非常明显的东西,但我并没有解决这个问题。

我只是想在从 json 提要中获取值后设置变量的值。

我正在使用 jquery 来获取 jsonp 提要,然后将值存储在我以后可以使用的变量中,但它不起作用,并且该值没有被存储。如果我 console.log 它返回它的值。

jQuery(document).ready(function($){
    serverip = "<?php echo $_SERVER['SERVER_ADDR']; ?>";
    stream_domain = "";

    $.ajax({url: 'http://load.cache.is/inspired.php?ip=' + serverip, dataType:'jsonp',
      success:  function(data){
        $.each(data, function(key, val) {
            if (key == serverip){
               stream_domain = val;
               console.log("val: " + val);
            }
        });
      }
    });

    console.log(stream_domain);
});

这是 jsfiddle.net 上的相同代码

最佳答案

您正在发出异步请求。因此,附加 HTML 的代码会在成功分配变量之前执行。

ajax 请求之后的代码在发出请求后立即执行。 因此,如果您需要响应数据,那么您应该移动您的追加代码以从类似于此的成功方法执行:

if (key == serverip){
    stream_domain = val;
    console.log("val: " + val);
    $("<span>" + val + "</span>").appendTo(".json");
    $("<span>" + stream_domain + "</span>").appendTo(".variable");
}

DEMO

关于javascript - 无法为变量设置新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13088107/

相关文章:

javascript - img 后的段落不会展开

javascript - 异步函数返回未定义且 $q 延迟

javascript - 原型(prototype)继承 - 编写

php - 我们如何用ajax jquery让我们的页面每分钟刷新一次数据呢?

javascript - 谁能解释一下这个 ajax .each 函数中的 item 来自哪里?

javascript - 有效地重命名/重新映射对象数组中的 javascript/json 对象键

javascript - 在搜索框中输入并重定向到另一个页面

javascript - 在每个表格单元格中选择下拉菜单后将其删除

javascript - 引导动态表单字段不起作用

javascript - Ajax 调用不适用于 android 但在 ios Cordova 上运行良好