2016-12-27 157 views
0

我正在做一个简单的事情,但我不明白为什么会发生以下问题:当我在窗体中输入一个值并单击按钮执行该功能时“加载”元素消失,无法显示。按钮点击删除dom隐藏元素阻止我显示

的JavaScript如下:

<div> 
    <input id="magLog" name="magLog" type="text" style="width: 500px;"/> 
    <button id="StartITSMcheck">Check</button> 
</div> 
<div> 
    <div id="logContainer" class="filtersUNoBorder" style="padding-left: 8px; height:auto"> 
     <div id="loading" class="clear loading"> 
       Caricamento in corso...</div> 
     <!--Add text after check--> 
    </div> 
</div>  
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#loading").hide(); 
    }); 
    $("#StartITSMcheck").click(function() { 
     if ($("#magLog").val() != "" && $("#magLog").val() != undefined) { 
      $('#loading').show(); // show the loading message. 
      $.ajax({ 
       type: "GET", 
       url: '<%= Url.Action("StartITSMcheck", "Integration") %>', 
       async: false, 
       data: { "magLog": $("#magLog").val() }, 
       datatype: "html", 
       success: function (result) { 
        $("#logContainer").html(result); 
        $('#loading').hide(); // hide the loading message 
       }, 
       error: function (req, status, error) { 
        if (req.responseText.indexOf('12017') != -1) { 
         alert("CATCH: Status: " + status + " Error " + req.responseText); 
        } 
        else { 
         alert("Error getting data.com -> Req.responseText: " + req.responseText + "Req.status: " + req.status + " status: " + status + " error: " + error); 
        } 
       } 
      }); 
     } else $("#logContainer").html("<p>Gentilmente inserire un magazzino logico</p>"); 
    }); 
</script> 
+0

可能是您的函数正在进入错误回调。隐藏加载错误回调以及。 – Deep

+0

进行同步呼叫是一个坏主意。这也可能是加载图形不显示的原因。 – epascarello

+0

@Deep即使出现错误,我也必须隐藏它,但它不是显示问题的固有内容。 – FeroX

回答

1
$("#logContainer").html(result); 

这可能是问题的原因。你用你的响应来替换div中的所有内容,包括你的加载元素。尝试将它放在div外,如下所示:

<div id="logContainer" class="filtersUNoBorder" style="padding-left: 8px; height:auto"> 
    <!--Add text after check--> 
</div> 
<div id="loading" class="clear loading">Caricamento in corso...</div> 
+0

我排除了这种可能性,因为点击后立即消失了dom元素。我也尝试了你的建议,事实上dom元素并没有消失,但问题仍然存在:当我按下按钮时,加载动画在请求的未决状态期间不显示。 – FeroX

+0

尝试在AJAX调用中使用'beforeSend'选项显示加载元素。如果我使用调试,我会看到这些步骤是正确执行的。例如:'$ .ajax({发送:function(){$('#loading')。show()} }' –

+0

;但是如果我删除断点并按下按钮,我不会销售加载,但只有保持“点击”几秒钟的按键。 – FeroX