var user_wbw_data_buffer = new Array(); function user_wbw_push_paragraph(blockid) {} function user_wbw_push_word_element(xWord) { let wordid = getNodeText(xWord, "id"); let wId = wordid.split("-")[2]; let mWord = doc_word("#" + wordid); let blockid = mWord.block.info("id"); user_wbw_push(blockid, wId, com_xmlToString(xWord),getNodeText(xWord,'status')); } function user_wbw_push_word(wordid) { let xWord = doc_word("#" + wordid); let blockid = xWord.block.info("id"); let book = xWord.block.info("book"); let para = xWord.block.info("paragraph"); let aWordid = wordid.split("-"); aWordid.length = 3; if (para != aWordid[1]) { alert("error:paragraph sn."); return; } let newWordid = aWordid.join("-"); let wId = aWordid[2]; let xAllWord = gXmlBookDataBody.getElementsByTagName("word"); let index = getWordIndex(newWordid); let wordData = ""; if (xAllWord[index]) { for (let i = index; i < xAllWord.length; i++) { if (getNodeText(xAllWord[i], "id").split("-")[2] != wId) { break; } wordData += com_xmlToString(xAllWord[i]); } user_wbw_push(blockid, wId, wordData,getNodeText(xAllWord[i],'status')); } } function user_wbw_push(block_id, wid, data,status=7) { let d = new Date(); let objData = new Object(); objData.block_id = block_id; objData.word_id = wid; objData.data = data; objData.time = d.getTime(); objData.book = doc_block("#" + block_id).info("book"); objData.para = doc_block("#" + block_id).info("paragraph"); objData.status = status; user_wbw_data_buffer.push(objData); } var commitTimes = 0; function user_wbw_commit() { if (user_wbw_data_buffer.length == 0) { return; } var jqxhr = $.post( "../uwbw/update.php", { data: JSON.stringify(user_wbw_data_buffer), }, function (data, status) { try { let result = JSON.parse(data); if (result.status == 0) { ntf_show("user wbw " + result.message); user_wbw_data_buffer = new Array(); } else { ntf_show("user wbw error" + result.message); } } catch (e) { console.error("user_wbw_update:" + e + " data:" + data); ntf_show("wbw fail"); } } ); jqxhr.done(function () { notify_bar.hide(); }); jqxhr.fail(function (xhr, error, data) { switch (xhr.status) { case 500: if (commitTimes < 5) { commitTimes++; notify_bar.show("发送失败,重试。第" + commitTimes + "次。"); user_wbw_commit(); } else { notify_bar.show("重试次数过多,请稍后再试。"); commitTimes = 0; } break; default: notify_bar.show(xhr.statusText); break; } switch (error) { case "timeout": notify_bar.show( "服务器长时间没有回应。等待发送队列" + user_wbw_data_buffer.length + "" ); break; case "error": notify_bar.show( "与服务器通讯失败,您可能没有连接到网络。等待发送队列" + user_wbw_data_buffer.length + "" ); break; case "notmodified": break; default: break; } }); }