1

状況

タブを利用するページがあります。一部のタブは、AJAX 機能を使用してコンテンツをロードします。ただし、サーバーから返される応答は、厳密には表示される HTML ではありません。

タブをインスタンス化するために、私は以下を使用します。これは、一連のフックを自動的に作成する非常に大きなフロントエンドの一部にすぎないため、可能であれば、以下のコードにある処理を維持したいと考えています。

objElement.tabs({
    heightStyle : "auto",
    show : {
        effect : "fade",
        duration : 400
    },
    hide : {
        effect : "fade",
        duration : 400
    },
    load: function( event, ui) {
        /* ### Processing here ###
        * Would like to be able to pass the response to a "postrequestprocedure"
        * function
        */
    });
}

jQuery タブは、データを直接タブにスローします。load イベントを使用して後処理を実行できることはわかっています。これはサーバー応答の例です。これは、以下に示すように改行タグで表示される JSON オブジェクトです。読みやすくするためにそれらを省略しました。

{
    "content" : 
        "<span><ul><li>list item</li></ul><p>Some example HTML</p></span>",
    "script":[
        "a.script",
        "b.script"
    ],
    "title":
        "User Login",
    "css": {
        "dev.min":"screen"
    }
}

問題

  • ajax プロパティは、$tabs({load: function(event,ui)}); によって部分的にのみ公開されます。インターフェース; この方法では、関連する操作/パラメーターにアクセスできません。

  • 応答を収集するときが来たら; html() を使用すると、応答の一部ではない一部の HTML の終了タグが返されます。正確には、応答で HTML を説明しましたが、これらの余分なタグはそうではありません。

  • text() を使用してコンテンツを収集すると、HTML の開始タグがすべて削除されます

質問

JSONオブジェクトとして解析するために、「いじられた」ように見えずに応答を取得するにはどうすればよいですか。

可能性

Zahid は、タブに関するデフォルトの ajax 動作を上書きできることを強調しました。そのようなオーバーライドが適用される条件を自動的に検出できることを意味する場合は、喜んでこれを行います

敬具

4

1 に答える 1

1

私と同じ問題を抱えている人にとっては、オーバーライドなどを実行する必要なく解決できました。

簡単に言うと、API が変更されたため、文書化されていない応答を取得する方法は次のようになります。

$().tabs({
    beforeLoad: function(event, ui) {
        ui.jqXHR.done(function(response) {
            console.log(response);
        });
    }
});
于 2013-07-18T04:05:32.460 に答える