2016-10-30 5 views
-2

外部ソース(ajax)から情報を取得するためのjQueryスクリプトがありますが、その間にローダーイメージが表示されます。行が実行されないので、JQueryはそれを好きではないようです。実行中は、入力を無効にする必要がありますが、そのコードはスキップされます。jqueryはコードのいくつかの行をスキップしているようです

私のjQueryコード:

$("#pnum").keyup(function(){ 
    nieuw = $(this).val(); 
    code = $('#pnum').val(); 
    $("#pnum").css("background-color", "#FFC080"); 
    if (oud != nieuw && option != 0 && code.length >= 1 && code.length <=4) { 
    $("#loaderImage").show(); 
    $("input").prop('disabled', true); 
    $("#mode").prop('disabled', true); 
    $('#pnumTable').empty(); 
    if (code.length >= 1) { 
     $.ajax({ 
     url: "http://sistermans.diskstation.me/NetBeans/Postcodes/api-postcode.php", 
     dataType: "jsonp", 
     jsonpCallback: "postcodeResults", 
     data : {mode: option, pnum: code } 
     }); 
    } 
    oud = nieuw; 
    $("#loaderImage").hide(); 
    $("input").prop('disabled', false); 
    } 
    if (code.length < 1 || code.length > 4) { 
    $("#pnum").css("background-color", "yellow"); 
    } 
}); 

ローダイメージと答えがポップアップする必要があり、HTMLの一部:

<div id="loaderImage"> 
    <p>Haal de gegevens op volgens methode : <br> 
    <div id="keuze"></div><p> 
    <p><img src="web_images/ajax-loader-hscrew.gif"></p> 
</div> 
<table> 
    <div id="pnumTable"> 

    </div> 
</table> 

答えはpnumTable divの中に表示されます。これは常に働きます。 <div id="keuze">は他の場所で扱われます。

私はたぶん間違っていましたが、私はどこにいるのでしょうか。

私を助けてくれる誰かがいますか?

+2

アヤックスので、コードはそれが行われるまで待つことを停止することはありません非同期です。ローダーの '.hide()'メソッドは即座に呼び出されるため、表示されません。 Ajax呼び出しが終了したときに発生させたいコードをコールバック関数に追加する必要があります。 – JJJ

+0

[this](http://stackoverflow.com/a/7613888/863110)の回答をお読みください。 –

答えて

0

は、このような成功コールバックの内側に隠しコードを入れてみてください...

if (code.length >= 1) { 
     $.ajax({ 
     url: "http://sistermans.diskstation.me/NetBeans/Postcodes/api-postcode.php", 
     dataType: "jsonp", 
     jsonpCallback: "postcodeResults", 
     data : {mode: option, pnum: code }, 
     success: function(){ 
       oud = nieuw; 
       $("#loaderImage").hide(); 
       $("input").prop('disabled', false); 
     } 
     }); 
    } 
+0

ローダーを非表示にしているのはローダーイメージではありませんが、入力の表示と無効化です。 Ajax呼び出しが成功しなかった場合でも、loderイメージは消滅し、入力を有効にする必要があります。 – user1886216

+0

次に、エラーが必要なように聞こえます。コールバックは、ajaxエラーでも隠すためです。重要な点は、主関数が非同期であるため実行が終了した後で成功とエラーの両方が発生することです –

関連する問題