javascript - Ajax 未在原型(prototype)上触发 - 我想我需要取消设置或删除 javascript 方法 - 造成严重破坏帮助!

标签 javascript json prototypejs scriptaculous

我正在使用 scriptaculous 库。然而,我在包含原型(prototype)库的 JSON 库时遇到了一些问题。它自动向所有对象添加 toJSONSTRing 和 parseJSONSTRING 方法,坦率地说,这在某些地方造成了严重破坏。就像我似乎无法使用 Ajax Updater 功能一样,我怀疑它是因为这个 toJSONSTRing 方法已附加到我传递给它的选项对象。

是否有办法取消设置或至少以某种方式删除已添加到对象的函数。

编辑:::

实际上,我正在尝试发出 ajax 请求,但遇到了问题

Ajax.Updater = Class.create(Ajax.Request,....

原型(prototype)库的一部分。在它应该执行和发布 AJAX 请求的部分,它没有执行 - 特别是在:

$super(url, options);

准确地说,我在这个网址上使用这个可排序和可编辑的表格网格: http://cloud.millstream.com.au/millstream.com.au/upload/code/tablekit/index.html

基本上,您可以单击表格单元格进行编辑,然后按“确定”按钮进行确认。单击按钮后,将发出 ajax 请求。

表的可编辑功能在提交函数中调用 Ajax 更新程序,如下所示:

submit : function(cell, form) {
        var op = this.options;
        form = form ? form : cell.down('form');
        var head = $(TableKit.getHeaderCells(null, cell)[TableKit.getCellIndex(cell)]);
        var row = cell.up('tr');
        var table = cell.up('table');
        var ss = '&row=' + (TableKit.getRowIndex(row)+1) + '&cell=' + (TableKit.getCellIndex(cell)+1) + '&id=' + row.id + '&field=' + head.id + '&' + Form.serialize(form);


        this.ajax = new Ajax.Updater(cell, op.ajaxURI || TableKit.option('editAjaxURI', table.id)[0], Object.extend(op.ajaxOptions || TableKit.option('editAjaxOptions', table.id)[0], {
            postBody : ss,
            onComplete : function() {
                var data = TableKit.getCellData(cell);
                data.active = false;
                data.refresh = true; // mark cell cache for refreshing, in case cell contents has changed and sorting is applied
            }
        }));
    },

问题是该请求从未发出,我一直按“确定”按钮却无济于事。

编辑::::::::::::::::

我仍然被难住了 - 我什至尝试过自己调用 Ajax.Updater 函数,但它根本不起作用。好像这个功能一下子就被官方废了。我已经做了你所说的更改,但一切都无济于事:(坦率地说,我已经没有选择了 - 另一个想法是放弃这个桌面套件并寻找其他具有类似功能的东西,希望这可能有效!

最佳答案

听起来这些方法正在被添加到 Object 的原型(prototype)中。通过添加到 Object 的原型(prototype),该库会自动提供从 Object 派生的所有内容(换句话说,所有内容)这些方法。您可能需要阅读一些关于 Javascript 中的原型(prototype)继承的内容,以便更好地处理这个问题。

无论如何,您可以通过执行以下操作来删除这些方法:

delete Object.prototype.toJSONString;
delete Object.prototype.parseJSONString;

关于javascript - Ajax 未在原型(prototype)上触发 - 我想我需要取消设置或删除 javascript 方法 - 造成严重破坏帮助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1631493/

相关文章:

jquery - 尝试使用加载了prototype.js 的 jQuery UIDialog 时出错?

c# - 如何从代码隐藏返回字符串并显示在网页上?

javascript - 将数组与字符串进行比较,并将数组中找到的所有项目替换为字符串中的公共(public)字符

java - 将java对象转换为具有不同对象名称的json

javascript - 使用 Prototype 触发点击事件

jquery - jQuery 中原型(prototype)的 Effect.Parallel 等效项

javascript - 合并两个 onEdits

javascript - js双值范围检查

json - AngularJS - 通过变量过滤 Json

javascript - 函数无法正确读取值