2009-07-22 2 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 внутри ссылки javascript не будет обрабатываться ASP.NET на сервере. –

+0

Держу пари, это проблема. Я знал это, но я забыл, что это было в скрипте. Ну, я думаю, я просто оставлю сценарий на странице. Я не думаю, что есть что-то еще, что я могу сделать. –

2

Вы поместили тег < в свой myScript.js? Если да, удалите их.

Ваш myScript.js должен начинаться с

вар optPrompt = "- Выберите один -";

+0

Нет. Я не ошибся. –

2

Поскольку вы теперь обслуживает JS как статический файл, а не с помощью вашего ASP, линии, как

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

больше не будет работать в качестве сервера не интерпретирует их и заменить их с правильными значениями , Вам нужно будет жестко закодировать их в скрипте или оставить эти строки в виде встроенных сценариев на главной странице и установить их как глобальные переменные, которые затем можно ссылаться на внешний файл.

Смежные вопросы