刷新当前选中的Ajax成功选项卡

时间:2014-08-07 13:25:55

标签: jquery ajax asp.net-mvc tabs jquery-1.8

我有几个标签,从数据库中填充。每个选项卡都包含一个部分视图,也是从数据库中填充的。当有人向这些部分代表的其中一个集合添加内容时,我希望它刷新标签内容,以反映更改。

function addNewRequest(arForm) {
    username = $(".ui-tabs-selected").attr("id");
    currentUser = document.getElementById("currUser").value;
    $.ajax({
        url: 'Home/submitAdvisoryRequestForm',
        type: 'POST',
        data: arForm.serialize() + "&username=" + username + "&currUser=" + currentUser,
        success: function (response) {
            if (response == "true") {
                $("#users").tabs("load", $('#users .ui-tabs-panel:not(.ui-tabs-hide)').index() - 1);
                dialog.dialog("close");
            } else {
                alert(response);
            }
        },
        error: function (xhr, ajaxOptions, thrownError) { alert(xhr.status); alert(thrownError); }
    });

}

据我了解,如果ajax调用成功,它将尝试在当前选定的索引处加载选项卡。我已经看过用于获取所选标签索引的表达式,据我所知,它可以工作,即使可能有点hacky。

应刷新选项卡的代码$("#users").tabs("load", $('#users .ui-tabs-panel:not(.ui-tabs-hide)').index() - 1);不执行任何操作。有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

F ** kadoodle-doo,我想通了。因为JQueryUI是蹩脚的,只允许您刷新加载AJAX的内容,所以更容易替换当前所选选项卡的div的HTML。

JQuery代码:

function addNewRequest(arForm) {
    username = $(".ui-tabs-selected").attr("id");
    currentUser = document.getElementById("currUser").value;
    $.ajax({
        url: 'Home/submitAdvisoryRequestForm',
        type: 'POST',
        data: arForm.serialize() + "&username=" + username + "&currUser=" + currentUser,
        success: function (response) {
            if (response) {
                $('#users .ui-tabs-panel:not(.ui-tabs-hide)').html(response);
                dialog.dialog("close");
            } else {
                alert(response);
            }
        },
        error: function (xhr, ajaxOptions, thrownError) { alert(xhr.status); alert(thrownError); }
    });
}

作为回应,抛出部分视图。

public ActionResult submitAdvisoryRequestForm(BCRTAdvisoryRequest newRequest, string username, string currUser)
{
    if (ModelState.IsValid)
    {
        var ar = new AdvisoryRequestsLogic();
        if (ar.addAdvisoryRequest(newRequest) > 0)
            return PartialView("_userAdvisoryRequests", ar.getUserAdvisoryRequests(username));
    }
    return null;
}