javascript - 将 var 设置为等于从函数返回的数据

标签 javascript jquery

var ipAddress="unknown";
$.getJSON('http://jsonip.appspot.com/?callback=?',
function(data){
ipAddress=data.ip;});


document.getElementById('callbackForm').elements["callback_form.ipAddress"].value = ipAddress;

这段 JavaScript 代码将 var ipAddress 设置为“unknown”,然后执行一个 jquery 函数,将 ipAddress 的值设置为用户的 IP。然后我尝试将表单元素设置为等于 ipAddress 的值。

这不起作用。表单元素被设置为“未知”。我不确定这是否是一个范围问题?任何建议表示赞赏。

最佳答案

发生的情况是回调正在异步执行。 $.getJSON call 告诉浏览器“从这个 URL 获取数据;准备好后,调用我提供的函数”。该函数不会立即执行。

您可以将更多逻辑移至回调中(即内联 ipAddress var 并分配给回调中的表单元素),或切换到功能更齐全的 jQuery.ajax方法和传递async:false在选项集中。当然,在所有情况下,您都将在调用的其余部分执行之前等待网络。

关于javascript - 将 var 设置为等于从函数返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6541143/

相关文章:

javascript - 隐藏 <Div> 和子标签

javascript - 父 View 上的 Angular UI 路由器动画

javascript - 使用 jQuery 根据索引选择一系列元素

javascript - React Router 链接不工作

javascript - 从数组中移除空对象

javascript - html、javascript - 弹出窗口

jquery - 无法更改 jQuery Mobile 背景颜色?

jquery - 属性分配不起作用

javascript - TinyMCE 自动调整大小插件不起作用

javascript - 图像区域选择 : It wont preview the pre-selection on init