为什么这个javascript解析不了?

问题描述:

我似乎已经一切就绪,为什么这个javascript解析不了?

<script language="javascript" type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 

<script type="text/javascript" src="js/mailing-list.js"></script> 

在标题中,并在JS文件夹mailing-list.js。然而,由于某种原因,它似乎没有解析。我在下面粘贴了代码 - 任何想法?

var emailEntered, 
nameVal, 
compVal, 
foneVal, 
cityVal, 

$(document).ready(function() { 
    $("#SendButton").click(function() { 
     $(".error").hide(); 
     var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
     var emailaddressVal = $("#email").val(); 

     if (emailaddressVal == '') { 
      $("#message").html('<span class="error">Enter your email address before submitting.</span>'); 
      return false; 
     } else if (!emailReg.test(emailaddressVal)) { 
      $("#message").html("<span class='error'>That is not an email address.&nbsp; Typo?</span>"); 
      return false; 
     } else { 
      emailEntered = escape($('#email').val()); 
     } 

     nameVal = escape($("#name").val()); 
     emailVal = escape($("#email").val()); 
     compVal = escape($("#comp").val()); 
     foneVal = escape($("#fone").val()); 
     cityVal = escape($("#city").val()); 
    }); 
    $('#signup').submit(function() { 
     $("#message").html("<span class='error'>Adding your email address...</span>"); 
     $.ajax({ 
      url: 'inc/store-address.php', 
      data: 'ajax=true&email=' + emailEntered + '&name=' + nameVal + '&comp=' + compVal + '&fone=' + foneVal + '&city=' + cityVal, 
      success: function (msg) { 
       $('#message').html(msg); 
      } 
     }); 
     return false; 
    }); 
}); 

更新:通过解析我的意思是电话mailing-list.js被忽略。

+0

不 “似乎并不解析” 是什么意思?怎么了?你得到什么错误? – j08691 2013-05-07 13:38:27

+0

你是什么意思“它不解析”?什么是错误? – Neal 2013-05-07 13:38:29

+0

解析我的意思是

var emailEntered, 
    nameVal, 
    compVal, 
    foneVal, 
    cityVal, 

应该是:

var emailEntered, 
    nameVal, 
    compVal, 
    foneVal, 
    cityVal; 

通知分号结尾。

+3

也是这些变量声明真的应该在匿名函数声明中。 – Alnitak 2013-05-07 13:40:43

+0

什么是匿名函数声明,Alnitak? – annoyingnewbie 2013-05-07 13:42:43

+0

在JS中,所有变量的作用域都是“function(){}”块的局部。如果你想声明一些变量,不要在文件级别声明它们,它们将是全局变量,但是在函数内部,以及更靠近你使用它们的地方。 – zmo 2013-05-07 13:45:50

你应该对代码运行静态代码分析,像jshint,一边写代码:

test.js: line 7, col 6, Missing semicolon. 
test.js: line 13, col 36, Expected '===' and instead saw '=='. 

,你会先看到一些语法错误。然后,你应该打开你的JavaScript控制台,看看错误是什么。通常解释者会提供很多信息。

顺便说一下,第二个警告并不是真正的错误,但是在进行平等检查时有一个很好的习惯。

关于您的编辑,您应该使用像萤火虫(或任何其他webdev工具,您可以在您最喜爱的浏览器中获得)的脚本,并检查它是否可以得到您正在编写的脚本。 它是否返回404?然后检查路径。它返回403吗?然后检查权限...

我不知道你的意思是“不解析”,但你应该检查开发者控制台(看看你的浏览器的菜单)。 并且:

var emailEntered, 
     nameVal, 
     compVal, 
     foneVal, 
     cityVal, 

应该是:

var emailEntered, 
     nameVal, 
     compVal, 
     foneVal, 
     cityVal;