之前,我有这个:
<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文件的最后一行。
我做错了什么?
答案 0 :(得分:4)
我是否正确地说这是ASP.Net?如果是,内联脚本如:
<%=Url.Action("GetDescription") %>
无法进入外部JavaScript文件。
答案 1 :(得分:2)
你把&lt;脚本&gt; myScript.js里面的标签?如果是,请删除它们。
你的myScript.js应该以
开头var optPrompt =“ - 选择一个 - ”;
答案 2 :(得分:2)
由于您现在将js作为静态文件提供,而不是通过ASP,像
这样的行<%=Url.Action("GetChildCategories") %>
将不再起作用,因为服务器不解释它们并用正确的值替换它们。您需要在脚本中对它们进行硬编码,或者将这些行作为内联脚本保留在主页面中,并将它们设置为全局变量,然后可以从外部文件中引用它们。