javascript - 在 Prototype 中使用自己的 AJAX 请求回调方法

标签 javascript ajax datatable prototypejs yui

我已经重构了工作代码以使用正确的对象,但现在我无法让 Prototype 的 AJAX.Request 正常工作。代码如下,它在 YUI 的 DataTable 上下文中工作:

SearchTable.prototype.setTableColumns = function (transport) {
      this.dataTableColumns = transport.responseText.evalJSON();
      this.dataTableCallback();
};

SearchTable.prototype.setTableConfiguration = function (transport) {
  this.dataTableConfiguration = transport.responseText.evalJSON();
  this.dataTableCallback();
};

SearchTable.prototype.show = function () {
  ....
  new Ajax.Request(this.dataProxy, {
    method: 'get',
    parameters: {
      format: 'json',
      param: 'columns'
    },
    onSuccess: this.setTableColumns
  });

 new Ajax.Request(this.dataProxy, {
   method: 'get',
   parameters: {
     format: 'json',
     param: 'configuration'
   },
   onSuccess: this.setTableConfiguration
  });
}
};

 SearchTable.prototype.dataTableCallback = function () {
        ....
 }

我的问题是 dataTableCallback 从未被调用。显然它抛出了一个 this 未定义的异常,我可以理解:回调不会在对象上下文中调用,因此 this 永远不会分配。我尝试过 curry 化回调但失败了。

问题是:我怎样才能做到这一点?

最佳答案

试试这个:

onSuccess: this.setTableColumns.bind(this)

关于javascript - 在 Prototype 中使用自己的 AJAX 请求回调方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001382/

相关文章:

javascript - 为数组中的每个元素执行ajax

javascript - facebook如何在浏览器地址栏中重写页面的源URL?

javascript - JQuery Datatable 插件在 CodeIgniter 3.x 中无法正常工作

php - 数据表插件中的服务器端自定义

javascript - 使用工厂创建 Controller

javascript - 使用带有 javascript api 的 Elasticsearch 插入数组

javascript - 对多个对象执行单一功能

javascript - php 到 ajax textarea 变量不显示

javascript - jQuery getJSON 方法无响应

C#:使用 PrimaryKey 从 DataTable 中检索值