0

私はこの答えを試しました。

これは私の関数です。画像をクリックすると呼び出されます。

function CheckOut(urlCheckoutNew,urlWebService) {
  var inputData = JSON.stringify(getQuotation(urlCheckoutNew));
  $('#imgloading').show();
  $.ajax({
    type: 'POST',
    url: urlWebService,
    contentType: 'application/json',
    processData: false,
    dataType: 'json',
    data: inputData,
    success: function (dataQuote) {
        //alert(1);
        $('#imgloading').hide();
    }
  });
}

これは私のhtmlです:

<div id="imgloading" style="display:none;">
    <img src="/Content/Images/ImageModal/loading.gif" alt="Confirming"/>
</div>

関数はsuccessアラートが機能している状態ですが、画像が読み込まれていません。警告ダイアログがポップアップすると、読み込み中の画像がバックグラウンドで読み込まれていることがわかります。しかし、アラートにコメントしたとき、画像は表示されませんでした。

どうすればこれを行うことができるか教えてもらえますか?

4

3 に答える 3

2

画像は間違いなく読み込まれています。画像が完全に表示されることはないため、すぐに非表示になります。

次のようにテストします。

$.ajax({
    type: 'POST',
    url: urlWebService,
    contentType: 'application/json',
    processData: false,
    dataType: 'json',
    data: inputData,
    success: function (dataQuote) {
        $('#imgloading').fadeOut(2000);
    }
});

その結果、画像が表示されてからゆっくりとフェードアウトするはずです。これは意図した動作ではない可能性がありますが、画像が実際に読み込まれていることを確認します(alert()アプローチが説得力がなかったため...)。

何かが実際に起こっているという安心感をユーザーに与えるために、画像を短時間表示することをお勧めします。その場合は、画像の非表示を少し遅らせることをお勧めします。これを実現する方法はたくさんありますが、私は通常、次のことを行います。

success: function (dataQuote) {
    var $image = $('#imgloading')
    $image.show(500, $image.fadeOut(2000));
}

画像はすでに表示されているため、show()は冗長であり、単純な遅延として機能します。

于 2012-10-19T02:51:08.307 に答える
1

試す

$('#imgloading').html('');

のhtmlが削除される#imgloadingため、画像はなくなります

そして、あなたは画像を表示していません

<div id="imgloading" style="display:none;">
                              ^^^^^^^^^^^-------its hidden already 

    <img src="/Content/Images/ImageModal/loading.gif" alt="Confirming"/>
</div>
于 2012-10-19T02:51:19.460 に答える
1

コードを見ると、最初に画像が表示されます。

$('#imgloading').show();

次に、AJAX リクエストを実行し、成功すると非表示にします。

$('#imgloading').hide();

画像がまったく表示されない場合は、いくつかの「問題」が考えられます。

  1. リクエストは同期的であるため、その間にページが更新される機会はありません。

  2. リクエストが非常に高速であるため、画像が表示されるのは非常に短い時間です。hide()a の内側をラップしsetTimeout()て非表示を遅らせ、適切に機能していることを確認できますが、 で同様に証明しましたalert()

  3. 前に関連して<div>、ブラウザを表示すると、最初に画像が読み込まれます。かかる時間によっては、リクエストが戻ってくるまでに再び非表示になります。

于 2012-10-19T02:51:37.500 に答える