首页 > 解决方案 > 使用 Pipline 插件时未为 xhr.dt 传递 jQuery DataTables 对 XHR 的引用

问题描述

数据表版本: 1.10.20

我目前正在使用管道插件并监听xhr 事件。xhr 事件按预期触发,但是回调中的 xhr 参数未定义。设置对象中还有一个 jqXhr 属性,但这也是未定义的。

以下是管道插件的片段

settings.jqXHR = $.ajax( {
                "type":     conf.method,
                "url":      conf.url,
                "data":     request,
                "dataType": "json",
                "cache":    false,
                "success":  function ( json ) {
                    cacheLastJson = $.extend(true, {}, json);

                    if ( cacheLower != drawStart ) {
                        json.data.splice( 0, drawStart-cacheLower );
                    }
                    if ( requestLength >= -1 ) {
                        json.data.splice( requestLength, json.data.length );
                    }

                    drawCallback( json );
                }
            } );

drawCallback() 似乎是触发 xhr 事件的原因。它利用 settings.jqXHR(在上面的代码中设置)将 xhr 参数传递回事件。由于这个成功是一个异步回调,我希望 setting.jqXHR 在设置对象中可用,但它在 drawCallback() 中是未定义的。

我正在考虑的另一种选择是修改管道代码以触发 xhr 事件,但是,这将导致事件触发 2x,因为它已经在 drawCallback() 中触发。这似乎不是解决问题的正确方法。

有没有人成功地使用 pipline 插件连接到 xhr 事件并访问 xhr 参数,或者对如何解决问题有任何建议?

标签: javascriptjquerydatatables

解决方案


这是在 DataTables 论坛中交叉发布的。Allan 能够纠正管道代码的问题。

谢谢 -需要在管道代码中进行一些小改动来纠正这个问题。我在这里放了一个活生生的例子:http: //live.datatables.net/xovesoso/1/edit

艾伦


推荐阅读