2011-07-16 109 views
2

這是缺少一個分號或大括號或什麼,我不能找出在哪裏或如何。缺少{參數列表後

有關如何調試這類問題的任何建議將有所幫助。我添加了一個螢火蟲告訴我,它仍然沒有工作,也沒有道理。

$(document).ready(function() { 
      $('#go').click(function() { 
       $.ajax({ 
        type: 'POST', 
        data: $('#newsletter').serialize(), 
        url: $('#newsletter').attr('action'), 
        success: function() 
        { 
        $('#thankYou').show(1000,setTimeout(

        function(){ 
        $('#thankYou').hide() 
        }) 

        ,3000); 


        }; 
       }); 
       return false; 
      }); 

     }); 

它仍然表明與本

function() 
        { 
        $('#thankYou').show(1000,setTimeout(

        function(){ 
        $('#thankYou').hide() 
        }) 

        ,3000); 


        } 
+0

我猜最後一個以上的三個分號是錯誤的,但我不確定。 –

+0

你確定裏面沒有其他代碼?或某些瀏覽器上的錯誤控制檯插件是有用的插件。你可以試試它。 –

+0

我使用[JSLint](http://jslint.com/)。它會告訴你你的錯誤和它們發生的地方。這有點激烈,但如果你喜歡,你可以改變設置,使其更自由。 – tjameson

回答

1

它看起來像3個問題:

  1. 額外的分號。
  2. show()語法。
  3. setTimeout()語法。

這應該工作; See it in action at jsFiddle。 :

$(document).ready (function() { 
    $('#go').click (function() { 
     $.ajax ({ 
      type:  'POST', 
      data:  $('#newsletter').serialize(), 
      url:  $('#newsletter').attr ('action'), 
      success: function() { 
          $('#thankYou').show (
           1000, 
           function() { 
            setTimeout (function() { $('#thankYou').hide(); }, 3000); 
           } 
          ); 
         } 
     }); 
     return false; 
    }); 
}) 


PS:對於剛剛的顯示和隱藏,jQuery提供:

success: function() { 
       $('#thankYou').show (400).delay (2500). hide (400); 
      } 

( 「我們不需要任何臭的setTimeout。」)

+0

感謝這工作,它只是沒有工作,當我把它粘貼到螢火蟲。然後執行。 –

+0

很高興我們在最後得出結論。 –

5

這裏語法錯誤:

    ,3000); 


       }; //<-- that should not have a semicolon 
+1

是的,我得出了同樣的結論。如果你喜歡,你實際上可以有一個逗號,如果你要添加其他屬性到$ .ajax – redbmk

+0

是的,那麼逗號將是最好的選擇。 – zellio

+2

除了後面的逗號會破壞IE8以下。 – user113716

6

你應該做的那些功能更多的嵌套,它可以幫助你在看着辦吧未來。這裏是更加縮進的代碼:

$(document).ready(function() { 
    $('#go').click(function() { 
     $.ajax({ 
      type: 'POST', 
      data: $('#newsletter').serialize(), 
      url: $('#newsletter').attr('action'), 
      success: function() { 
       $('#thankYou').show(1000, setTimeout(function() { 
        $('#thankYou').hide(); 
       }), 3000); 
      }; 
     }); 
     return false; 
    }); 
}); 

問題是';'成功函數聲明後。