在ajax调用上执行的jQuery对象方法

时间:2015-04-03 05:21:19

标签: jquery ajax model-view-controller

我正在使用镜像服务器端Rails MVC的javascript构建一个MVC框架客户端。我构建的系统经常进行AJAX调用并发送模型文件中定义的jQuery对象。

我遇到的问题是模型对象附加了方法,当jQuery通过AJAX发送它时,它执行对象中的每个方法。

任何人都可以解释为什么会发生这种情况并采取预防措施吗?

示例模型

var search = function (){
    this.id = null;
    this.investor = null;
    this.program = null;
    this.parent = null;
    this.client = null;
    this.date = null;
    this.custom_order = "custom_order";
    this.data_set = "all";
    this.recursive = false;
    this.search = null;
    this.state_filter = PUB | DRAFT;

    this.message = function()
    {
        alert("Message");
    }
}

示例控制器

var nav_object = {search: System.search, page: System.page};
            $.ajax({
              type: "GET",
              contentType: "application/json; charset=utf-8",
              url: "/guidelines/search",
              data: nav_object,
              dataType: 'json',
              success: function(data){
                //Success
                if(data.errors)
                {
                    alert(data.errors.message);
                }
                else
                {
                    System.guidelines.search = data.guidelines;
                    System.page = data.page;
                    System.meta.searchState = false;
                    loadView();
                }
              }
            });

在上面的示例中,System.search是搜索类的一个实例。当它插入nav_object并发送到服务器时,将运行消息功能。

我知道我可以在发送它之前拔出类的成员并构建一个新对象我只觉得那些代码可以避免。

1 个答案:

答案 0 :(得分:0)

如果您创建了一个包装函数,您可以有选择地选择发送到ajax调用的内容。这将功能与数据分开。您可能还希望对函数进行原型设计,以便在使用它的任何地方都不会重新定义它。