JQuery $ .post回调触发一个永不完成的函数

时间:2017-11-22 21:45:43

标签: javascript jquery asp.net model-view-controller callback

这是问题所在。我正在回收收到MVC部分页面的服务器。它一直很好用,它称之为成功功能。但是,我正在调用一个函数,之后迭代特定的元素:

$(".tool-fields.in div.collapse, .common-fields div.collapse").each(...)

在这里,我正在检查一个特定的属性(使用数据的自定义属性),这也很好用;然而;迭代器永远不会完成。没有给出错误消息,程序没有阻止。它就退出了。

这是迭代器的函数

function HideShow() {
    $(".tool-fields.in div.collapse, .common-fields div.collapse").each(function () {


    if (IsDataYesNoHide(this)) {

        $(this).collapse("show");

    }
    else
        $(this).collapse("hide");
    });

    alert("test"); 
}

以下是调用的函数,“ IsDataYesNoHide ”:

function IsDataYesNoHide(element) {
    var $element = $(element);
    var datayesnohide = $element.attr("data-yes-no-hide");
    if (datayesnohide !== undefined) {
        var array = datayesnohide.split(";");
        var returnAnswer = true;

        for (var i in array) {
            var answer = array[i].split("=")[1];

            returnAnswer = returnAnswer && (answer.toLowerCase() === "true");

        }
        return returnAnswer;
    }
    else {
        return false;
    }


}

这是属性出现的方式

data-yes-no-hide="pKanban_Val=true;pTwoBoxSystem_Val=true;"

编辑:每个请求,这里是jquery $ .post

$.post(path + conPath + '/GrabDetails', $.param({ data: dataArr }, true), function (data) {
        ToggleLoader(false); //Page load finished so the spinner should stop

        if (data !== "") { //if we got anything back of if there wasn't a ghost record
            $container.find(".container").first().append(data); //add the content
            var $changes = $("#Changes"); //grab the changes
            var $details = $("#details"); //grab the current

            SplitPage($container, $details, $changes); //Just CSS changes

            MoveApproveReject($changes); //Moves buttons to the left of the screen
            MarkAsDifferent($changes, $details) //Adds the data- attribute and colors differences


        }
        else {
            $(".Details .modal-content").removeClass("extra-wide"); //Normal page
            $(".Details input[type=radio]").each(function () {
                CheckOptionalFields(this);
            });
        }

        HideShow(); //Hide or show fields by business logic
    });

有一段时间,我认为jquery崩溃正在崩溃,但是简单的alert('test')向我展示了发生了什么。它只是永远不会完成。

是否有特定的时间长度可以从jquery回发调用回调函数?我正在加载模态视图中的所有内容,这表示“哦,也许jquery被包含两次”,但我已经遇到了其他问题,并确保它只包含一次。因为include在整个应用程序中只有一次,并且布局仅应用于主页面。

我对任何可能性持开放态度。

谢谢!

〜布兰登

0 个答案:

没有答案