通过“回复”#39;或者'数据' AJAX返回命名空间函数

时间:2015-06-05 09:55:35

标签: javascript jquery ajax namespaces

我正在尝试通过命名空间来清理我的代码,这对我来说是新的。我有一个非常基本的应用程序,它发出一个Ajax请求,然后在响应中加载大量内容。代码开始看起来很乱,所以我想命名它,然后调用以AJAX响应为参数的命名空间函数。 1.可以而且应该这样做吗? 2.如果是这样,这里是代码



var GETDATA = {
	myAlert: "this variable is the property of a namespace",
    // response?: ???? do i need to declare response var here somehow 
	
	myNSFunction: function () {
		alert(this.myAlert)
	}

	//theFunctionIWant: function (response??) {
		// takes the response from ajax request
		// does some stuff to it.
	//}
};


$(document).ready(function() {

  $( "#my-form" ).submit(function( event ) {
  
     $.ajax({
    	type: 'GET',
    	url: "http://localhost:3000/DATA"
  	})
  	.done(function(response) {	
  
       //GETDATA.theFunctionIWant();
  
  });
                      
                      
});




任何帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

var GETDATA = {
    myAlert: "this variable is the property of a namespace",
    myNSFunction: function () {
        alert(this.myAlert)
    },
    theFunctionIWant: function (response) {
        console.log(response);
    }
};


$(document).ready(function () {
    $("#my-form").submit(function (event) {
        $.ajax({
            type: 'GET',
            url: "http://localhost:3000/DATA"
        })
        .done(function (response) { 
            GETDATA.theFunctionIWant(response);
        }
    });                  
});

<小时/> 你应该这样做吗?

如果不理解你的整体目标和事物的规模,很难通过判断,但大多数情况下都是如此。你必须问自己,这真正提供了什么好处?我的意思是,处理程序甚至可以是一个函数本身,不一定是命名空间。命名空间的理由是什么?

您是否有一组相似的响应处理功能?您是否正在尝试构建一个收到响应和相关函数的存储,以响应响应?您是否担心需要命名空间才能解决的某种冲突解决方案?等等

<小时/> 更好的方法:考虑私有范围的闭包。

var RequestProcessors = (function() {
    var thisIsPrivate = "Ok",
        thisIsPrivateToo = "Fine";

    return {
        processorOne: function(resp, arg) { /* logic here */ },
        processorTwo: function(resp, arg) { /* logic here */ }
    }
})();