javascript - 如何强制同步 $.get 调用将文件内容加载到变量中?

标签 javascript jquery ajax json jquery-get

我明白怎么做$.get()异步获取。但是我怎样才能强制同步调用呢?

我需要从 json 文件加载的首选项,以便在整个应用程序的许多 javascript 调用中使用。如何将这些首选项加载到 DOM 中,而不是加载到应用程序其余部分中使用的变量中?

以下是它异步工作的方式:

$.get('my.json',function(data) { var myJson = data; });
console.log(myJson); // undefined
$('.myElement').html(myJson.title); // this will asynchronously load the contents of myJson.title into `.myElement`

我读到我应该尝试:

$.get('my.json',WrapperFunction(data));
WrapperFunction(data) {
    // do all of your javascript calls here
}
console.log(myJson); // undefined

还有其他在 get 完成之前不要继续的想法吗?

最佳答案

  1. 您需要在函数作用域之外声明 myJson var function(data) { var myJson = data; }); 否则其他函数将看不到它。

    var myJson; $.get(...);

  2. 同步 ajax 调用很糟糕。你不需要那个。您所需要的只是当数据可用时通知应用程序的其他部分。

var myJson;
$.get('url.json', function(data){
    myJson = data;
    dataIsAvailable();
});

function dataIsAvailable() {
 ... you can use myJson here
}

关于javascript - 如何强制同步 $.get 调用将文件内容加载到变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22388394/

相关文章:

javascript - 如何从异步调用返回响应?

javascript - 检查 JavaScript 数组中的值

javascript - 如何在 jQuery 验证插件进行验证之前运行函数?

JavaScript 在 2 个函数之间切换

javascript - 我可以使用 console/alert/some-other-means 一次读出所有 CSS 属性吗?

javascript - HTML 表单模糊调用 PHP 的 JQuery 函数调用

javascript - jQuery animate() 不适用于 If-Else 语句

javascript - ajax-jquery post,服务器未收到任何表单数据

jquery - 简单的 jQuery Ajax 调用会泄漏 Internet Explorer 中的内存

javascript - JQUERY 淡出,未按预期工作