2011-07-16 78 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; 
    }); 
}); 

问题是';'成功函数声明后。