2

jQuery ダイアログで別のページを読み込もうとしています。私はすでに多くの記事を見てきました(以下のものを含む)。受け入れられている手法は次のようです。

$(function () {
        $(document).ready(function () {
                var d1= $('#dialog-import').dialog({
                resizeable: false,
                height: 600,
                modal: true,
                autoOpen: false,
                buttons: {
                    'My button1': function () {
                        $(this).dialog('close');
                    },
                    Cancel: function () {
                        $(this).dialog('close');
                    }
                }
            });

            d1.load('/DataSets/ImportSpreadsheet/91D55CAC-6C2C-46EE-8730-0DBFE26D1D92').dialog('open'); 

        });
    });

これにより、完全なコンテンツと 2 つのダイアログ ボタンを含むダイアログが開きますが、2 つのダイアログ ボタンは機能しません (クリックできません)。

次のようなコードの他の代替手段:

 $('#dialog-import').load('/DataSets/ImportSpreadsheet/' + a, function () {
                $('#dialog-import').dialog('open');
            });

Google Developer Console で次のエラーが発生します。

Uncaught TypeError: Object [object Object] has no method 'dialog' 

私はばかげた何かを見逃しているに違いありません。しかし、私は本当にそれを調べてきましたが、運がありません。

ありがとう。

これは私がやろうとしていることです。彼らのアドバイスを試してみましたが、運が悪かったです:

jQuery モーダル ダイアログ onclick

jQueryのダイアログ

jquery uiダイアログでページをロードする方法

ダイアログに別のページを読み込む

別のページを開くための Jquery ダイアログ

4

1 に答える 1

2

問題は、ヘッダー、本文、html 要素を含む完全なページを読み込もうとしていたことであることが判明しました。jQuery はそれを好まなかった。

私は2つの可能な解決策を見つけました:

  1. C# MVC 部分ビューを使用します。部分ビューにヘッダー、html などの要素が含まれていないことを確認してください。それを使用すると、元の質問のコードは問題なく機能します。

  2. iFrame 要素を使用して、次のコードのように src 属性を変更して探しているページを読み込みます。

    $('#selector').click(function () {
    $('#dialog-import').attr('src','/DataSets/ImportSpreadsheet/...'); $('#dialog-import' .dialog('開く');
    });

それでも、この投稿が暗黙的に言うように、ヘッダー/ボディタグについて心配する必要はないと言っている非常に多くの人々に困惑しています: ASP.NET Mvc jquery ui dialog as view or partialview?

私は調査を続けますが、同じ問題を抱えている人がこれを役に立つと思うかもしれません.

于 2012-11-28T02:02:11.197 に答える