1

データをロードしてから 2 秒後にタイムアウトを設定したい。私はajaxが初めてなので、私のコードを明確にしてください...私はすでに多くの(ajaxでタイムアウトを設定する)回答を見てきましたが、すべてが$ .ajax()を介して行うためです。

.load() を介してどのように行うことができますか? 可能ですか?

私のAJAXコード1:

// Start of our new ajax code
        if (!url) {
            url = jQuery('#product_addtocart_form').attr('action');
        }
        url = url.replace("checkout/cart","ajax/index"); // New Code
        var data = jQuery('#product_addtocart_form').serialize();
        data += '&isAjax=1';
        jQuery('#ajax_loader').show();
        try {
            jQuery.ajax( {
                url : url,
                dataType : 'json',
                type : 'post',
                data : data,
                success : function(data) {
                    jQuery('#ajax_loader').hide();
                    parent.setAjaxData(data,true);
                }
            });
            jQuery("#productOptions").modal('hide');
        } catch (e) {
            //alert(e);
        }
        // End of our new ajax code

2:

// AJAX product options modal
$('.optionsTrigger').on('click', function() {
    var target, url;
    target = $(this).attr('data-target');
    url = $(this).attr('href');
    $(target).load(url, function(){
        $(target).modal({
            show: true
        });
    });
});
$('#productOptions').on('hidden', function() {
    $('#productOptions').html('<img src="<?php echo $this->getSkinUrl("img/loading.gif"); ?>" id="optionsLoading" />');

    window.setTimeout("Tick()", 2000);

    function Tick()
     {

     }  
   });
4

2 に答える 2

2

jQuery にはajaxSetup()メソッドが用意されています。オプションを含め、すべてのオプションを通常のajax()方法で設定できtimeoutます。そこで設定された設定は、 経由で AJAX リクエストを呼び出すときにも利用できるはずですload()

于 2012-10-18T10:37:18.060 に答える
1

最初に、Ajax が非同期である(のようにsetTimeout) という事実に頭を悩ませます。コールバックは将来いつか呼び出されます。

タイムアウトするには?あなたが使用することができます

var request = jQuery.ajax(…);
setTimeout(function() {
    request.abort();
}, 2000);
request.done(function callback(){ … });

しかし、それはそれよりもはるかに簡単です。jQuery には、そのオプション objecttimeoutのパラメーターが既にあります。ajax()

ただし、これは使用できloadません。ここでは、jqXHR オブジェクトが返されるのではなく、現在の jQuery DOM 選択が返されます。ajax をグローバルに構成する必要があるか、自分でメソッドを使用loadして構築しないでください。それほど難しくありません。ソースを参照してください

于 2012-10-18T10:36:01.720 に答える