ajax上傳大量excel數(shù)據(jù):如何避免瀏覽器卡死?
前端JavaScript處理大量Excel數(shù)據(jù)(例如上萬條記錄)并提交到php后端時,直接使用Ajax循環(huán)提交效率極低,甚至可能導(dǎo)致瀏覽器崩潰。 高效解決方案的關(guān)鍵在于減少請求次數(shù),將數(shù)據(jù)合并傳輸。
與其逐行發(fā)送數(shù)據(jù),不如將所有Excel數(shù)據(jù)整合為一個請求。 可以將Excel數(shù)據(jù)轉(zhuǎn)換為json數(shù)組,然后將此json數(shù)組作為Ajax請求參數(shù)發(fā)送到后端PHP。 這樣,只需一次請求即可完成所有數(shù)據(jù)的傳輸。
例如,Excel數(shù)據(jù)結(jié)構(gòu)為[{id:1, name:’數(shù)據(jù)1′}, {id:2, name:’數(shù)據(jù)2′}, …],可以將其轉(zhuǎn)換為JSON字符串:'{“data”: [{id:1, name:’數(shù)據(jù)1′}, {id:2, name:’數(shù)據(jù)2′}, …]}’,然后作為Ajax請求的data參數(shù)發(fā)送。
然而,更推薦的方法是直接將Excel文件上傳到后端。 后端PHP可以使用PHPExcel或SpreadsheetReader等庫直接解析Excel文件,避免前端進(jìn)行復(fù)雜的JSON轉(zhuǎn)換和大量的Ajax傳輸。 這種方法效率更高,實現(xiàn)也更簡單。