为什么赢了';t a“中的函数;名称空间;JavaScript文件是否填充dropdownlist?
我有两个外部JavaScript文件,一个像“名称空间”一样设置,另一个文件调用它 下面是我的“名称空间”的样子为什么赢了';t a“中的函数;名称空间;JavaScript文件是否填充dropdownlist?,javascript,jquery,javascript-namespaces,Javascript,Jquery,Javascript Namespaces,我有两个外部JavaScript文件,一个像“名称空间”一样设置,另一个文件调用它 下面是我的“名称空间”的样子 var GlobalScript = { GetAllStates: function () { $.ajax({ type: "GET", url: URLParam.GetStatesForDropdown, contentType: "application/json; charse
var GlobalScript = {
GetAllStates: function () {
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
ShowStates(data);
}
})
},
ShowStates: function (stateData) {
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
}
下面是调用GetAllStates()函数的脚本
$(document).ready(function () {
GlobalScript.GetAllStates();
});
现在这不起作用,但是,如果让“名称空间”文件看起来像这样
function ShowStates(stateData){
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
var GlobalScript = {
GetAllStates: function () {
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
ShowStates(data);
}
})
}
}
然后,将填充包含dropdownlist的视图
我的问题是如何让它以我第一种方式工作,因为如果我以第二种方式工作,那么以我现在的方式工作是毫无意义的(至少据我所知)。
ShowStates
不是一个变量。它是分配给GlobalScript
的对象的属性
ShowStates(数据)代码>应该是GlobalScript.ShowStates(数据)代码>在js中尝试此代码
var GlobalScript = {
GetAllStates: function () {
var self = this; // <= self object created
$.ajax({
type: "GET",
url: URLParam.GetStatesForDropdown,
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
self.ShowStates(data);
}
})
},
ShowStates: function (stateData) {
$("#acVendorState").kendoDropDownList({
dataSource: stateData,
dataTextField: "StateName",
dataValueField: "StateID",
animation: false,
optionLabel: {
StateName: "-- Select State --"
}
});
}
}
var GlobalScript={
GetAllState:函数(){
var self=this;//在第一个示例中,您是否在成功回调中放置了一个调试器,并确保对ShowStates()
的调用实际有效?@p.s.w.g,这是JavaScript中的一个输入错误,对于构造函数是传统的,只有构造函数的名称以大写字母开头。contentType:“application/json;charset=utf-8",
-您正在发出一个GET请求,为其获取内容类型请求头毫无意义。没有内容来描述请求的类型。@Quentin,我刚刚注意到您的评论……我不一定是JavaScript或JQuery开发人员。我不一定是这方面的专家,也不一定是新手。直到去年我才参与其中d与服务器端开发。因此,我每天都在学习新的东西,与客户端开发一起工作……因此,为了让我理解如何从GlobalScript中调用函数,我需要始终使用名称空间和函数?或其他对它的引用。@Chris或者,您可以将此引用保存在变量中可在$.ajax()之外调用
调用,并用它引用另一个函数。使用变量名GlobalScript
有点脆弱。@尖头,你能详细说明GlobalScript相对于使用此引用来说有点脆弱吗?@Chris从实际意义上讲,这没什么大不了的,但是如果GlobalScript
接受一个新值由于某种原因(比如一个bug),那么这个函数可能会停止工作。