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 メソッド呼び出しが既に含まれているパーシャルのスクリプトにあります。唯一の問題は、私がその機能に入らないことですか? 私はデバッガーをヒットしたことがないので、何かが起こっていることを私に伝えており、その関数を呼び出すことはありません...何が間違っていますか?
更新:私はこのことをデバッグしていて 、何が起こっているのかを理解しようとしています. 私のフォームは 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 ライブラリの 1 つと何らかの形で競合する必要があります...おそらく最後のタブにjqgridをロードしたという事実は、ある種の競合を引き起こしていますか?