joh*_* Gu 4 jquery ajax.beginform asp.net-mvc-3
我Ajax.beginform在asp.net mvc视图中有以下内容,其中ajax调用的结果将替换 <div id= "searcharea">,如下所示: -
@using (Ajax.BeginForm("Search", "Patient",
new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "searcharea",
LoadingElementId = "progress2"
}))
{
<table >
<tr>
<th>
Searching By First Name (English) :-
</th>
<th>
<input type="text" name="firstname" />
</th></tr>
<tr>
<th>
Searching By Family Name (English) :-
</th>
<th>
<input type="text" name="familyname" />
</th></tr>
<input type="submit" value="Search " /></th><th></th></tr>
</table>
}
<div id = "progress2">
<img src= "@Url.Content("~/Content/images/Ajax-loader-bar.gif") ">
</div>
<p>
<div id= "searcharea">
</div>
Run Code Online (Sandbox Code Playgroud)
所以在开始我虽然我将只能执行一次搜索,因为<div id= "searcharea">将被ajax调用的结果替换,并且在此之后它将不会是avilalbe,并且如果我尝试做anther ajax调用那么将没有更多<div id= "searcharea">用以替换结果.
但实际发生的是我能够毫无问题地进行多次搜索,所以这意味着InsertionMode.Replace不会替换DOM元素并且它只会在此DOM中插入ajax调用的结果,因为我可以不明白我怎么能多次引用一个DOM元素,即使它被我的第一个ajax调用取代了 !! !! 谁能解释这是怎么发生的?BR
DMu*_*gan 13
你是误会InsertionMode.Replace.这将取代一切内的HTML元素你指定UpdateTargetId,而不是元素本身.
它是一样的
$("#searcharea").html(newHTMLcontent);
Run Code Online (Sandbox Code Playgroud)
由于你提到的原因,销毁它所使用的元素的插入模式不会非常有用:你只能使用它一次.