初ポスターはこちら。私が遭遇した他の問題に対するいくつかの素晴らしい答えを見つけましたが、これは私を困惑させ、最善の方法がわかりません. 私はいくつかの検索を行いましたが、解決策と思われるものは何も見つかりませんでした。
基本的な BOM 表示であるテーブルを作成しています。この関数は、目的のパーツ ID とスペース (読みやすくするために結果をインデントするために使用されます) を受け取り、それ自体を再度呼び出して子パーツの各結果をチェックします。
これは、ASYNC をfalseに設定して目的の結果が得られた場合にうまく機能しますが、これを非同期にして同じ結果をより短時間で達成する方法があるのではないかと考えました。
はい、私はそれを変更して、各呼び出しで DOM を更新しないようにします。これを変数に変更して、最終的に呼び出しが 1 つだけになるようにします。
どんな助けでも感謝します。
/*******************************************************************
FUNCTION - Traverse the BOM
Check each PID for child parts
********************************************************************/
function traverse_bom(search_term, spaces) {
spaces += " ";
$.ajax({
//async: false,
url: 'spec_collector_ajax.php',
dataType: 'json',
data: { data_retrieve: "database_query",
table: "Product_Structure",
order: "ORDER BY COMPRT_02",
search: search_term},
success: function(data2)
{
// If there is data, then print it out to a table
if (data2 != 0)
{
// Iterate through each entry and list the results
$.each(data2, function(i2,item2)
{
// print the BOM entry info
$('#table_bom tbody:last').append( '<tr><td>' + spaces + item2.COMPRT_02 + '</td><td>' + item2.QTYPER_02 + '</td></tr>');
// Check for children under this part
traverse_bom(item2.COMPRT_02, spaces);
});
}
else
{
}
},
// Error handling
error: function (xhr, ajaxOptions, thrownError) {
// Print error message for debugging
alert(thrownError);
}
});
};