Antes tenía esto:

<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>

Luego puse todo mi script en línea en un archivo (myScript.js) y cambié mi HTML a esto:

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

Y ahora nada está funcionando. Abrí mi página en IE7 y tenía un error de página que decía:

Línea: 54
Error: nombre desconocido.

La línea 54 es la última línea de mi archivo javascript externo.

¿Qué estoy haciendo mal?

0
Ronnie Overby 23 jul. 2009 a las 00:48

3 respuestas

La mejor respuesta

¿Estoy en lo cierto al decir que esto es ASP.Net? Si es así, guiones en línea como:

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

No puede ir en el archivo externo de JavaScript.

4
phairoh 22 jul. 2009 a las 20:51

Como ahora está sirviendo el js como un archivo estático, en lugar de a través de su ASP, líneas como

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

Ya no funcionará ya que el servidor no los interpreta y los reemplaza con los valores correctos. Deberá codificarlos en la secuencia de comandos o dejar esas líneas como secuencias de comandos en línea en la página principal y establecerlas como variables globales a las que luego puede hacer referencia desde el archivo externo.

2
Daniel Roseman 22 jul. 2009 a las 20:54

¿Puso la etiqueta