使用Synchronous ajax调用加载屏幕

时间:2015-03-16 12:27:03

标签: javascript jquery ajax

我正在使用Ember.js和node.js制作的Web应用程序,可以选择在3种语言之间切换。单词存储在json文件中。截至目前,我正在使用同步ajax调用来获取所有页面的数据(大约7或8个调用)。 功能



function translate(iso,coll)
{
    var x = jQuery.parseJSON(
         jQuery.ajax({
            url: window.location.origin+'/translate?iso='+iso+'&coll='+coll,
            async: false,
            dataType: 'json',
             success : function(){
             }
         }).responseText
    );
    console.log(x);
    return x;
};



 我的问题是如何在我的通话完成之前显示动画的屏幕。 谢谢。

2 个答案:

答案 0 :(得分:1)

创建叠加部分,将其隐藏以进行初始加载。当你点击按钮并调用翻译功能时,显示覆盖并将其隐藏为成功回调的时间。

<强> HTML

<div id="dvLoading" style="
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,0.2);
    position: fixed;
    top: 0px;
    left: 0px;
    display: none;
">
  Loading
</div>

<强> JAVASCRIPT

function translate(iso,coll)
{
    $("#dvLoading").show();
    var x = jQuery.parseJSON(
         jQuery.ajax({
            url: window.location.origin+'/translate?iso='+iso+'&coll='+coll,
            async: false,
            dataType: 'json',
             success : function(){
                $("#dvLoading").hide();
             }
         }).responseText
    );
    console.log(x);
    return x;
};

答案 1 :(得分:0)

<强> AJAX

  

Ajax(也是AJAX; /eɪdʒæks/;异步JavaScript和   XML)1 [3]是一组相互关联的Web开发技术   在客户端用于创建异步Web应用程序。同   Ajax,Web应用程序可以向服务器发送数据和从服务器检索   异步(在后台)不干扰   显示现有页面的行为。可以使用检索数据   XMLHttpRequest对象。尽管有这个名字,但XML的使用并非如此   必需(JSON通常用于AJAJ变体),请求也是如此   不需要异步。[4]

取自here

正如您所看到的,根据定义,AJAX是异步的,因此使其同步是矛盾的和次优的。您需要修改您的功能,因此您的请求可以异步运行,并且所有依赖于它的请求都将在.done()success()中初始化/计算。阅读更多here