2014-09-27 80 views
0

爲什麼當我加載這個頁面時,它會自動調用函數?爲什麼當我加載這個頁面時,它會自動調用函數?

我的主要IDE的是,當我按下按鈕,它會顯示LOADING 2秒,然後開始後到data.php

但是當我測試它,當我加載頁面,我沒有按下按鈕,它會自動調用函數doajax_products_check如何將代碼應用於主要想法?

的index.php

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<form name="form1" id="form1id" method="post"> 
<input type="text" name="products_id" value="1294759"> 
<input type="text" name="products_color" value="red"> 
<input type="text" name="products_type" value="electronic"> 
<input type="button" value="Check" onclick="doajax_products_check()"/> 
</form> 
<span id="loading" style="display: none;">LOADING</span> 
<p id="myplace_data"></p> 
<script> 
timer = setTimeout 
    (
     function doajax_products_check() 
      { 
       $('#myplace_data').hide(); 
       $("#loading").fadeIn("slow"); 
       $.ajax 
        (
         { 
          url: 'data.php', 
          type: 'POST', 
          data: $('#form1id').serialize(), 
          cache: false, 
          success: function(data) 
           { 
            $("#loading").fadeOut("slow"); 
            $('#myplace_data').show(); 
            $('#myplace_data').html(data); 
           } 
         } 
        ); 
      }, 2000 
    ); 
</script> 

data.php

<?PHP echo "completed"; ?> 

回答

0

你應該這樣做:

function doajax_products_check() { 
    setTimeout(function(){ 
     $('#myplace_data').hide(); 
     $("#loading").fadeIn("slow"); 
     $.ajax 
     (
      { 
       url: 'data.php', 
       type: 'POST', 
       data: $('#form1id').serialize(), 
       cache: false, 
       success: function (data) { 
        $("#loading").fadeOut("slow"); 
        $('#myplace_data').show(); 
        $('#myplace_data').html(data); 
       } 
      } 
     ) 
    }, 2000); 
} 

這是追加,因爲setTimeout的稱爲doajax_products_check()函數。 ..

0

setTimout(callback, delay)將調用後delay MS提供的回調函數,你的情況,你加載頁面後2秒。

試試這個:

<script> 
function doajax_products_check(){ 

    $('#myplace_data').hide(); 
    $("#loading").fadeIn("slow"); //show loading before waiting for timeout 

    setTimeout(function() { 
     $.ajax({ 
      url: 'data.php', 
      type: 'POST', 
      data: $('#form1id').serialize(), 
      cache: false, 
      success: function (data) { 
       $("#loading").fadeOut("slow"); 
       $('#myplace_data').show(); 
       $('#myplace_data').html(data); 
      } 
     }); 
    }, 2000); 
} 
</script> 

看看這裏:http://jsfiddle.net/o5vrbqjy/1/

0

你的腳本片段直接解析後r加載頁面,因此立即設置超時。超時時間必須在onclick回調中設置。 您可以使用

<script> 
function doajax_products_check() { 
    setTimeout(function(){ 
    // Your logic for the check goes here 
    }, 2000); 
} 
</script> 
相關問題