为什么赢了';t a“中的函数;名称空间;JavaScript文件是否填充dropdownlist?

为什么赢了';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

我有两个外部JavaScript文件,一个像“名称空间”一样设置,另一个文件调用它

下面是我的“名称空间”的样子

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),那么这个函数可能会停止工作。