Я пытаюсь заставить 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"
}
)
)
После того, как это произойдет, я ожидаю вызвать функцию switchToResultTab, указанную в onSuccess... Которая находится в сценарии на частичном, на котором уже есть вызов метода .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 больше не загружается к тому времени, когда я захожу так далеко... Она каким-то образом конфликтует с одной из библиотек jquery, которые я загрузил... Может быть, тот факт, что jqgrid загружен на последней вкладке, вызывает какой-то конфликт?