0

こんにちは、私は AJAX コールバックを行っているところに問題があります。

var htmlToInject;
        function Next(step) {
            var options = {
                cache: false,
                type: "POST",
                url: "Page.aspx?Page=" + step,
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "html",
                success: function (result) {                   
                    htmlToInject = result;                  
                },
                error: function (jqXHR, textStatus, errorThrown) {                   
                },
                complete: function (jqXHR, textStatus) {                  
                    $("#form1").empty();
                    $("#form1").append(htmlToInject);                  
                }
            };
            $.ajax(options);
        }

しかし、問題は、jQuery 検証メソッドを使用していて、コントロールを動的に作成している場所にあります。したがって、コールバックはポストバックを引き起こさないため、コントロールは生成されません。これを行うことで解決しました。

                        $("#form1").empty();
                        $("#form1").append(htmlToInject);      

次に、新しく生成されたコントロールが表示されました。

しかし、フィールドの検証でエラーが発生しています:「設定」が null です。

ページのソースを調べたところ、以前に生成されたコントロールのソースがそこにありました。「読み込み」効果が必要ないため、ポストバックしたくないため、ajaxを使用しています。

どうすればこの問題を乗り越えることができますか?

よろしくお願いします。

4

2 に答える 2

0

ページのソースを調べたところ、以前に生成されたコントロールのソースがそこにありました。

右クリック->ソースの表示について話している場合は、ページが通常の POST/GET でロードされたときにサーバーから取得した HTML が表示されます (ブラウザーによっては、サーバーへの要求を繰り返して取得する場合もあります)。JS/AJAX による変更を確認したい場合は、開発者ツールを使用する必要があります。最新のブラウザはすべてそれを備えています。FireFox には、Firebug をインストールする必要がある場合があります。F12 を押すだけで、これらのツールが表示されます。

しかし、フィールドの検証でエラーが発生しています:「設定」が null です。

フォームの内容を変更した後、検証の初期化コードが表示されません。

complete: function (jqXHR, textStatus) {                  
                    $("#form1").empty();
                    $("#form1").append(htmlToInject);                  
                }

$("#form1").validate({...})新しいフォーム要素を配置した後、追加(または検証プラグインの初期化方法) を再度行う必要があります。

于 2012-12-19T09:55:49.447 に答える
0

目立たない ajax を使用している場合は、必要に応じて success/complete 関数でこれを行うことができます。


$('#form1').html(htmlToInject);
$.validator.unobtrusive.parse('#form1');
于 2012-12-19T09:54:33.680 に答える