我试图让Ajax.BeginForm调用一个函数,然后传回最后的标签序列,并且从那里追加一个表。
这将是基本的局部视图...
<script type="text/javascript">
$(function () {
$("#searchPatient").tabs();
});
function switchToResultTab(data) {
$('a[href="#retTable"]').click();
debugger;
$("#list").setGridParam({
datatype: 'jsonstring',
datastr: data,
caption: 'Patient Search Result'
}).trigger("reloadGrid");
};
function failToTab(data) {
alert("");
$("list").setGridParam({
datatype:'jsonstring',
caption: 'Patient Search Result',
datastr:data
}).trigger("reloadGrid");
};
</script>
<div id="searchPatient" style="display:inline; float:inherit; width:100%">
<ul>
<li><a href="#searchByMRN">Search By MRN</a></li>
<li><a href="#searchByDemographics">Search By Demo</a></li>
<li><a href="#retTable">Return Table</a></li>
</ul>
@Html.Partial("_SearchByMRN")
@Html.Partial("_SearchByDemographic")
@Html.Partial("_RetTable")
</div>
这将是怎样,我异步调用我的功能......一切正常了这一点...
@using(Ajax.BeginForm("SearchByDemographic",
"SearchPatients",
null,
new AjaxOptions{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
LoadingElementId = Url.Content("~/Images/ajax-loader.gif"),
UpdateTargetId = "retTable",
OnSuccess = "switchToResultTab(data)",
OnFailure = "FailToTab"
},
new{
id = "formSearchByMRN"
}
)
)
在此之后获得通过,我希望能调用的onSuccess列出的switchToResultTab功能...这是一个脚本上具有.tabs()jQuery的方法调用已经在它的部分。 唯一的问题是,我从来没有在该函数? 我从不打调试器,这样就告诉我的东西是怎么回事,我从来没有调用这个函数......我在做什么错?
更新:我调试这个事情,我试图弄清楚发生了什么事好了,我一直在调试这个东西,它似乎认为我的jQuery函数永远不会被激活。 看来我的形式做一个实际的提交,而不是一个ajax提交。 这是我目前可以推测。 我完全不知道为什么发生这种情况。 继续 * 更新:尝试不同的东西一对夫妇 *次要更新......与Ajax.BeginForm挣扎后,我回到我的老尝试和真正的Html.BeginForm方法,我写我自己的jQuery的功能...
$('#searchByDemographics').submit(function () {//#formSearchByMRN,
if ($(this).valid()) {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
$('#retTable').html(result);
switchToResultTab(result);
}
});
}
return false;
});
在这两种情况下,它似乎在某种程度上或其他我的jQuery库是由当时我走到这一步不再加载...它有一个confict某种方式,我已经加载了jQuery的图书馆之一......也许事实上,我的jqGrid加载的最后一个选项卡上造成某种冲突的?