0

之前,我有这个:

<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 中打开了我的页面,它有一个页面错误,内容如下:

行:54
错误:未知名称。

第 54 行恰好是我的外部 javascript 文件的最后一行。

我究竟做错了什么?

4

3 回答 3

4

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

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

无法进入外部 JavaScript 文件。

于 2009-07-22T20:51:52.070 回答
2

您是否将 <script> 标签放入 myScript.js 中?如果是,请删除它们。

你的 myScript.js 应该以

var optPrompt = "- 选择一个-";

于 2009-07-22T20:49:43.540 回答
2

由于您现在将 js 作为静态文件而不是通过您的 ASP 提供服务,因此像这样的行

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

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

于 2009-07-22T20:54:01.283 回答