我可能遗漏了一些非常明显的东西,但我没有遇到这个问题。
我很容易在从json feed获取值后设置变量的值。
我正在使用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
上的相同代码答案 0 :(得分:2)
ajax调用是异步的,因此事件的时间轴是:
在使用变量之前等待成功事件。这是您更新的jsFiddle,其中我添加了一个在成功回调函数中调用的函数:
function continueWorking(){
console.log(stream_domain);
$("<span>" + stream_domain + "</span>").appendTo(".variable");
}
答案 1 :(得分:2)
您正在发出异步请求。因此,在成功之前执行附加HTML的代码会分配变量。
在发出请求后,ajax请求后面的代码将不可执行地执行。 因此,如果您需要响应数据,那么您应该从类似于此的成功方法移动您的追加代码:
if (key == serverip){
stream_domain = val;
console.log("val: " + val);
$("<span>" + val + "</span>").appendTo(".json");
$("<span>" + stream_domain + "</span>").appendTo(".variable");
}