我正在开发一个asp.net mvc 4应用程序,我在Index视图中使用PartialView作为表。在我进行初始ajax调用之后,请求成功并且相应地更新UI。但是当我再次尝试更新时,JavaScript对点击事件没有响应。
这是典型的吗?
AJAX电话:
$("#button").click(function(){
$.ajax({
url: 'url',
type: "POST",
data: $("#form0").serialize()
}).done(function (allData) {
$("#mypartialId").html(allData);
ResizeContent();
}).fail(function (jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
});
这样的事情在我的控制器索引动作中:
if(Request.IsAjaxRequest())
{
return PartialView("_PartialView", model);
}
return View(model);
Razor Ajax.BeginForm,默认情况下为form0:
@using (Ajax.BeginForm("Index", "MyController",
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "mypartialId"
}))
我在索引中的部分渲染:
<div id="mypartialId">
@{Html.RenderPartial("_PartialView", Model);}
</div>
这可以工作一次,但当我点击按钮开关在partialView中时,JavaScript变得无法响应。我猜它的索引视图没有用partialView重新加载...会不会有任何解决方法?
答案 0 :(得分:1)
我使用.on()函数而不仅仅是@click(),正如@Sergey Akopov建议的那样。之后我又遇到了另一个问题,因为返回的数据是一个表,所以IE9给了我UI问题。
修复是在将表格标签注入DOM
之前从表标签中删除空格 var expr = new RegExp('>[ \t\r\n\v\f]*<', 'g');
table = table.replace(expr, '><');
$("#mypartialId").html(table);
这是'{3}}到'td'问题,在IE9中显示奇怪。