C# AJAX回调不刷新页面
大家好,我遇到了一个问题,我正在进行AJAX回调:C# AJAX回调不刷新页面,c#,asp.net,jquery,C#,Asp.net,Jquery,大家好,我遇到了一个问题,我正在进行AJAX回调: var htmlToInject; function Next(step) { var options = { cache: false, type: "POST", url: "Page.aspx?Page=" + step, data: "{}",
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
伙计们,我怎么能克服这个问题
非常感谢。如果您使用的是低调的ajax,您可以根据需要在success/complete函数中执行此操作:
$('#form1').html(htmlToInject);
$.validator.unobtrusive.parse('#form1');
我查看了页面源代码,源代码就在那里
以前生成的控件
若你们谈论的是右键单击->查看源代码,那个么当页面加载常规POST/get时,它会显示你们最初从服务器上获得的HTML(一些浏览器甚至会重复请求服务器获取它)。如果您想看到JS/AJAX所做的更改,您需要使用开发人员工具。所有现代浏览器都有这种功能。FireFox可能需要安装Firebug。只需按F12键即可查看这些工具
但是字段上的验证给了我错误:“设置”为空
更改表单内容后,我看不到任何验证初始化代码:
complete: function (jqXHR, textStatus) {
$("#form1").empty();
$("#form1").append(htmlToInject);
}
您应该添加
$(“#form1”)。在放置新表单元素后再次验证({…})
(或验证插件的初始化方式) HtmlToInjector变量有$(“#form1”).validate({…})作为要验证的控件集的一部分,我使用开发人员工具检查了页面的源代码,但它没有出现在那里。jQuery将其删除。试着把它移到完整的功能中,看看它是否能工作。可能$(“#form1”).html(HTMLToInjection)
会工作,但不确定。我正在完整的函数中执行它,它根本不在那里,也不工作。你在做什么?据我所知,htmlointer
包含一段..
,您希望.append(htmlointer)
将执行该脚本,对吗?我认为您无法在尝试时将javascript包含在返回的HTML中(即使用“html”类型。这可能会给您一些线索:getting不包含不引人注目的属性或方法错误。确定-您必须使用不同的机制来连接验证,类似于FAngel所建议的。