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);      

然后显示新生成的控件。

但是对字段的验证给了我错误:“设置”为空。

我查看了页面源代码,之前生成的控件的源代码就在那里。我不想回帖,因为我不想要“加载”效果,因此我使用 ajax。

我该如何解决这个问题?

提前谢谢了。

4

2 回答 2

0

如果您使用的是不显眼的 ajax,您可以在成功/完成功能中酌情执行此操作:


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

我查看了页面源代码,之前生成的控件的源代码就在那里。

如果您正在谈论右键单击->查看源代码,那么它将显示您在使用常规 POST/GET 加载页面时最初从服务器获取的 HTML(某些浏览器甚至可能会重复向服务器发出请求以获取它)。如果您想查看 JS/AJAX 所做的更改 - 您需要使用开发人员工具。所有现代浏览器都有。FireFox 可能需要安装 Firebug。只需按 F12 即可查看这些工具。

但是对字段的验证给了我错误:“设置”为空。

更改表单内容后,我没有看到任何验证初始化代码:

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

放置新的表单元素后,您应该再次添加$("#form1").validate({...})(或如何初始化验证插件)。

于 2012-12-19T09:55:49.447 回答