-->

Ajax.BeginForm通JSON数据回JQ UI选项卡(Ajax.BeginForm pass

2019-10-17 00:59发布

我试图让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加载的最后一个选项卡上造成某种冲突的?

Answer 1:

在你AjaxOptions ,尝试更换:

OnSuccess = "switchToResultTab(data)"

有:

OnSuccess = "switchToResultTab"

另外,还要确保你已经包括了jquery.unobtrusive-ajax.js脚本到你的页面,否则, Ajax.BeginForm会像一个正常的形式:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>


文章来源: Ajax.BeginForm pass Json data back to Jq UI tabs