AJAX回调没有刷新页面

时间:2012-12-19 09:47:45

标签: c# asp.net jquery

大家好我有问题,我正在做一个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);      

然后显示新生成的控件。

但是对字段的验证给了我错误:'settings'为空。

我看了一下页面源代码,源代码就是之前生成的控件。我不想回发,因为我不想要“加载”效果,因此我使用ajax。

我怎么能过来这个问题呢?

非常感谢提前。

2 个答案:

答案 0 :(得分:0)

如果您正在使用不显眼的ajax,您可以在适当的情况下在成功/完成功能中执行此操作:


$('#form1').html(htmlToInject);
$.validator.unobtrusive.parse('#form1');

答案 1 :(得分:0)

  

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

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

  

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

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

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

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