2009-07-22 36 views
0

之前,我有这样的:JavaScript文件引用的问题(用jQuery)

<head> 
    <script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     var optPrompt = "- Select One -"; 
     var subCats; 
     var parentCats; 
     var nextBtn; 

     var ParentChanged = function() { 
      ClearDescription(); 

      if (this.selectedIndex == 0) { 
       $(subCats).html($("<option>").text(optPrompt)); 
      } 


      $.getJSON('<%=Url.Action("GetChildCategories") %>', { parentId: $(this).val() }, 
        function(data) { 
         subCats.options.length = 0; 
         $("<option>").text(optPrompt).appendTo(subCats); 
         $(data).each(function() { 
          $("<option>").attr("value", this.ID).text(this.Name).appendTo(subCats); 
         }); 
        }); 
     } 

     var DisplayDescription = function(catId) { 
      $.ajax({ 
       url: '<%=Url.Action("GetDescription") %>', 
       data: { categoryId: catId }, 
       dataType: 'html', 
       success: function(data) { 
        $("p#categoryDescription").html(data); 
       } 
      }); 
     } 

     var ChildChanged = function() { 
      var catSelected = this.selectedIndex != 0; 

      if (!catSelected) ClearDescription(); 
      else DisplayDescription($(this).val()); 
     } 

     var ClearDescription = function() { 
      $("p#categoryDescription").html(''); 
     } 

     $(function() { 
      parentCats = $("select#Category").get(0); 
      subCats = $("select#Subcategory").get(0); 
      nextBtn = $("input#nextButton").get(0); 

      $(parentCats).change(ParentChanged); 
      $(subCats).change(ChildChanged); 
     }); 

    </script> 
</head> 

然后,我把我所有的内嵌脚本到一个文件中(myScript.js),并改变了我的HTML这样:

<head> 
    <script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
    <script src="/Scripts/myScript.js" type="text/javascript"></script> 
</head> 

现在没有什么工作。我在IE7打开了我的网页,它有这样的阅读页面错误:

Line: 54
Error: Unknown name.

54号线正好是我的外部JavaScript文件的最后一行。

我在做什么错?

回答

4

我说得对,这是ASP.Net吗?如果是这样,内联脚本如:

<%=Url.Action("GetDescription") %> 

无法进入外部JavaScript文件。

+0

这就是问题 - ASP.NET引用中的ASP.NET代码将不会由服务器上的ASP.NET处理。 – 2009-07-22 20:54:52

2

您是否已将<脚本>标记放入您的myScript.js中?如果是,请将其移除。

你myScript.js应

VAR optPrompt开始= “ - 选择 - ”;

+0

不,我没有犯这个错误。 – 2009-07-22 20:52:31

2

既然你现在服务于JS作为静态文件,而不是通过你的ASP,线条状

<%=Url.Action("GetChildCategories") %> 

将不再作为服务器工作不理解他们,并用正确的值进行替换。您需要在脚本中对它们进行硬编码,或者将这些行作为内联脚本保留在主页面中,并将它们设置为全局变量,然后您可以从外部文件中引用它们。