jQuery 对象方法在 ajax 调用时执行

jQuery object method executing on ajax call

我正在使用 javascript 镜像服务器端 Rails MVC 构建客户端 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 是搜索 class 的一个实例。当插入 nav_object 并发送到服务器时消息函数是 运行。

我知道我可以提取 class 的成员并在发送之前构建一个新对象我只是觉得有很多代码可以避免。

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