我正在修改第三方 - 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);
}
}