使用Web 應用程式執行從伺服器顯示資訊等任務時,通常不僅需要傳送資料到伺服器,同時也接收回應。然而,有時這些回應可能不是簡單的文字或 JSON,而是可下載的檔案。
目前的問題提出了在 JavaScript 中處理二進位檔案回應的挑戰/jQuery。當伺服器回應包含 JSON 資料的 POST 請求而傳回可下載檔案(例如 PDF、XLS 或其他格式)時,就會發生此問題。
一種流行的方法是在 HTML 文件中建立隱藏的 iframe 元素。 iframe(內嵌框架的縮寫)可用於在目前網頁中嵌入外部網頁。透過將 iframe 的 src 屬性設定為伺服器傳回的 URL,可以觸發瀏覽器下載檔案。
以下是示範此方法的程式碼片段:
<code class="javascript">$.post('/create_binary_file.php', postData, function(retData) { var iframe = document.createElement("iframe"); iframe.setAttribute("src", retData.url); iframe.setAttribute("style", "display: none"); document.body.appendChild(iframe); });</code>
中這段程式碼中,我們先建立一個iframe 元素並將其來源設定為伺服器傳回的URL (retData.url )。然後,我們透過將其顯示樣式屬性設為 none 來隱藏 iframe,確保它在使用者介面中不可見。最後,我們將 iframe 附加到 HTML 文件的正文中。
另一個選項是使用 window.location 將瀏覽器重新導向
<code class="javascript">success: function(json,status) { window.location.href = json.url; }</code>另一個選項是使用 window.location 將瀏覽器重新導向到可下載檔案的 URL .href。此方法比 iframe 方法更直接,但不太優雅,因為它可能會導致使用者體驗明顯延遲或中斷。
注意事項
所描述的兩種方法都有自己的特點優點和缺點。 iframe 方法更可靠,並且可以更好地控制下載過程。然而,它可能很麻煩,並且可能不適用於所有場景。視窗位置重定向方法更簡單,但不太可靠,並且可能會破壞使用者體驗。
最終,適合您的應用程式的最佳方法將取決於您的特定要求和約束。以上是透過 POST 請求發送 JSON 資料時如何處理 JavaScript/jQuery 中的二進位檔案回應?的詳細內容。更多資訊請關注PHP中文網其他相關文章!