我想知道在Ajax處理請求時是否可以打印某些內容。如果是,請讓我知道,因爲我面臨的是一個問題,我想獲得在Ajax調用請求和它的響應之間打印一些東西Ajax如何在生成響應時獲得多個響應
實際上,我想讀取3000多行的csv,並且在此過程之間,我想顯示no行讀取並在另一個csv中複製。
所以我想顯示的東西像3000過程中有50行完全複製,這將繼續進行下去,直到它將達到3000行。
它有一種方式,然後讓我知道!
我想知道在Ajax處理請求時是否可以打印某些內容。如果是,請讓我知道,因爲我面臨的是一個問題,我想獲得在Ajax調用請求和它的響應之間打印一些東西Ajax如何在生成響應時獲得多個響應
實際上,我想讀取3000多行的csv,並且在此過程之間,我想顯示no行讀取並在另一個csv中複製。
所以我想顯示的東西像3000過程中有50行完全複製,這將繼續進行下去,直到它將達到3000行。
它有一種方式,然後讓我知道!
您可以使用XHR進度的事件(如果您的瀏覽器支持他們):
https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress
https://dvcs.w3.org/hg/progress/raw-file/tip/Overview.html#interface-progressevent
How to check in JavaScript if XMLHttpRequest object supports W3C Progress Events?
但你的問題是更不是簡單地我有1000個字節了的可能9999。你想知道到底有多少行你已經閱讀到這一點。
我認爲你可以在每個progress事件讀xhr.responseText
,但前提是不完整的要求(如純文本)時,也當不使用異步請求解析的 - https://stackoverflow.com/a/5319647/319878。
但對於像zip.js
請求壓縮內容時使用非文本二進制數據與arraybuffer
工具庫,這將無法工作,因爲這些要求必須是異步(http://www.w3.org/TR/XMLHttpRequest/#the-responsetype-attribute)。如果試圖在這種情況下使用xhr.responseText
,你會得到這樣的(例如從Firefox)的錯誤:
[Exception... "An attempt was made to use an object that is not, or is no longer, usable"
code: "11"
nsresult: "0x8053000b (InvalidStateError)"
location: "http://localhost/xhr-progress-test/test-xhr-on-progress.html Line: 1075"]
所以對於壓縮內容(使用zip.js
),我認爲你將不得不等待所有的響應在使用之前到達。這不是你想要的。
更簡單的辦法是修改您的服務器代碼,以一次返回選定的行。例如。行1-100,然後101-200等
您可以嘗試多種方法之一來解決這個問題:
JSONP回調: 這是你的問題的一個恰當的解決方案。您可以批量處理50行CSV數據的響應。每個JSONP調用都會有一個開始,並將獲得50行數據。因此,要獲取300行數據,您將有6個回調。你可以傳遞一個開始參數並返回開始 - 開始+ 49行(總共50),當開始== 1時,你也可以傳遞標題。在每次成功的回調中,您可以按比例增加進度欄。
優點:易展上沒有取得任何進展。的行。
缺點:響應中返回的數據必須採用JSON格式;需要實現回調函數。
計算字節: 顯示上沒有任何進展。傳輸的字節數。一個例子可在Stackoverflow上找到。不知道它是否適用於您的情況,因爲您希望以no爲基礎顯示進度。的行。
優點:易展上沒有取得任何進展。的字節。
缺點:可能不適用於你的情況。
加載圖標或酒吧: 這一切的最簡單的方法。只需顯示一個不斷重複的加載圖像或連續進度條。
優點:輕鬆展現不斷進步。
缺點:只顯示用戶發生了什麼事情,沒有百分比的基礎上。
可能有過根據您的情況的其他解決方案,請以此爲出發點,進一步探索。
請提供更多詳情 – 2013-05-04 12:00:43
好的我添加了一些更詳細的信息,所以它沒關係!或讓我知道是否有更多信息需要。 – drsndodiya 2013-05-04 12:35:01