Ajaxがプロトタイプで起動しない-JavaScriptメソッドを設定解除または削除する必要があると思います-大混乱を引き起こします!

StackOverflow https://stackoverflow.com/questions/1631493

質問

scriptaculousライブラリを使用して作業しています。ただし、プロトタイプライブラリにJSONライブラリを含めると、いくつかの問題に直面します。 toJSONSTringおよびparseJSONSTRINGメソッドをすべてのオブジェクトに自動的に追加し、率直に言って、これは場所で大混乱を引き起こしています。私はAjax Updater関数を使用できないようであり、このtoJSONSTringメソッドがオプションオブジェクトにアタッチされているため、これを渡すのではないかと疑っています。

とにかく、オブジェクトに追加された関数を設定解除または少なくとも何らかの方法で削除する必要があります。

編集:::

実際、私はajaxリクエストを作成しようとしていますが、

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

プロトタイプライブラリの一部。 AJAXリクエストを実行およびポストすることになっている部分では、特にそうではありません:

$super(url, options);

正確には、このURLでこのソートおよび編集可能なテーブルグリッドを使用しています。 http://cloud.millstream.com。 au / millstream.com.au / upload / code / tablekit / index.html

基本的に、テーブルセルを編集して編集し、[OK]ボタンを押して確認します。ボタンをクリックすると、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
            }
        }));
    },

問題は、リクエストが行われず、[OK]ボタンを押し続けて無効になることです。

EDIT :::::::::::::::::

ここではまだ困惑しています-Ajax.Updater関数を自分で呼び出してみても、まったく機能しません。このような機能は、突然役に立たないものとして公式にレンダリングされました。私はあなたが言った変更を加えましたが、すべては役に立ちません:(率直に言って、ここでオプションが不足しています-別のアイデアは、このテーブルキットを捨てて、それが機能することを期待して同様の機能を持つ何かを探すことです!

役に立ちましたか?

解決

" delete"を使用してオブジェクトから何でも削除できます:

a.toJSON = function () {};
delete a.toJSON;
a.toJSON() => error: toJSON is not a function
a.toJSON => undefined

しかし、あなたは何が起こっていると思うかのために何が起こっているとは思わない:) Ajax.Updaterであなたが持っている問題についてもっと詳細を教えてください?


編集を確認しました。 OK、Ajax.Updaterを呼び出すコードの実際の行を投稿することもできます。また、重要なこととして、フィードするオプションオブジェクトの作成方法を詳細に説明できますか。

また、次のようなことを行っていることを確認してください:

new Ajax.Updater(stuff)

だけでなく:

Ajax.Updater(stuff)

新しいアップデータオブジェクトを作成して" new"を使用する必要があります。 (ほとんどの場合、すでに確認しているので、確認してください)。


OK ajax.Updaterに何が渡されるのかまだわかりませんが、見えないものを拡張するので、これを試してください:"&"を削除してください変数" ss "の begining ; optionsオブジェクトでは、 postBody:ss の代わりに parameters:ss を使用します。

他のヒント

これらのメソッドがObjectのプロトタイプに追加されているようです。 Objectのプロトタイプに追加することにより、ライブラリはObjectから派生したすべて(つまり、すべて)のメソッドも自動的に提供します。これをよりよく理解するには、Javascriptのプロトタイプ継承を読んでください。

とにかく、これらを行うことでこれらのメソッドを削除できます:

delete Object.prototype.toJSONString;
delete Object.prototype.parseJSONString;
delete obj.property

この場合:

delete obj.toJSONSTring;
delete obj.parseJSONSTRING;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top