0

我正在修改第三方 - Web 客户端应用程序,我只能在其中访问某些 js 文件。搜索功能仅限于一次在一个给定的服务器节点中搜索,作为一种解决方法,我对所有服务器节点进行了硬编码并创建了一个 for 循环,在不同的节点上多次调用“搜索”。

服务器响应(以 FORM 的形式 - 没有 getter)由回调自动处理,然后呈现表单的视图。这意味着我只能显示最后一个响应,因此只能显示一组结果。

为了处理这个问题,我添加$trs = $(tr).clone(true)了回调函数,保存以前表单中的所有行,然后 - 我将最后一个循环“搜索”以进行另一个回调 - 然后将从 $tr 中附加收集的行并显示最后一个表单完成所有节点的所有结果。

但结果不一致。它有时只显示一个服务器节点的结果。我认为这是由于服务器响应的一些延迟导致该表单最后呈现。我试图通过setTimeout功能来延迟,但这让我无法得到任何结果

我对所有网络编程都很陌生——JS 和 JQUERY(以及 CSS 和 HTML 甚至大声笑),我想就更好的方法来处理这个问题征求你的建议。

谢谢!

 _handleConfigSubmit: function (form, error) {
        //alert("_handleConfigSubmit");

        if (form) {
            var formView = new jabberwerx.ui.XDataFormView(form);                
            var that = this;

             formView.event("xdataItemSelected").bind(function(evt) {

                that.jq.find(".muc_search_button_join").removeAttr("disabled");

                var resultTable = that.jq.find(".muc_search_results table.result_table");
                resultTable.find("tr.selected").removeClass("selected");

                that._selectedItem = evt.data.selected;
                resultTable.find("tr#"+evt.data.selected._guid).addClass("selected");
            });

           var searchResultsDiv = jabberwerx.$(".muc_search_results", this.jq);
           searchResultsDiv.empty();
            this.update();
            var dim = {
                width: searchResultsDiv.width(),
                height: searchResultsDiv.height()
            };
            formView.render().appendTo(searchResultsDiv);
            formView.dimensions(dim);

            $trs = $("table.result_table tbody>tr:not(:first)").clone(true);
            if ($trList!=null){
                $trList = $trList.add($trs);
            }else{
                $trList = $trs;
            }

            $("table.result_table tbody>tr:not(:first)").remove()

            if (ctr<=3){
                $("table.result_table tbody").append($trList);
            }else{
                ctr++;
            }


        } else {
            this._showError(error);
        }
    }
4

0 回答 0