2012-10-14 24 views
1

我想我寫一個小型的php程序,它通過cURL從遠程服務器獲取csv文件。它工作到目前爲止,現在我想在JS中使用這個CSV文件。PHP cURL抓取文件,在Javascript中使用

什麼是將這個文件從PHP到JS的最佳方式是什麼?

在php服務器上創建tmp文件並在JS中使用此文件的鏈接?有更聰明的方法嗎?

感謝

+0

你是什麼意思給文件? – AMember

+0

你說得對,「給」不是很清楚。我想通過JS獲取由php提供的信息。 – vo1d

回答

2

我會用AJAX調用PHP文件,然後將使用捲曲得到CSV。

如果您選擇直接使用PHP加載DOM中的文件,那麼在cURL操作完成之前該頁面不會顯示。根據經驗,我發現如果頁面加載需要30秒,最好使用「加載...」顯示頁面,而不是在29秒內顯示空白頁面,並在最後一秒顯示所有內容。

順便說一句,使用cURL和AJAX調用也是一種繞開同域AJAX的方式。

我不會建議在JS中使用PHP代碼,因爲如果您選擇這樣做,它將消除緩存/縮小JS的可能性。另外,它不漂亮。

我該怎麼做;

  • 呼叫使用AJAX
  • 的PHP文件中使用捲曲
  • 輸出它的JSON數據,它可能會像這樣

    獲取文件 「{」 1 「:{」 COL1 「:」hey「,」col2「:」hey2「},」2「:{」col1「:」heyhey「,」col2「:」heyhey2「}}」

  • 顯示錶中的數據使用dataTables或類似的東西。

+0

我認爲這是最好的解決方案。我仍然不確定JSON是否會成爲我最聰明的方式,但這是正確的方向。謝謝 – vo1d

2

如果該文件是保證所需要的頁面上你最好關閉直接添加內容到頁面加載它,既可以在隱藏的DOM元素,或者最有可能作爲JavaScript變量。如果你已經擁有了這個文件,那麼你最好的選擇可能是把它翻譯成一個更接近你期望的JavaScript處理的表單,最有可能的是一個JSON結構。可選的話,如果它很大,你最好使用邏輯Javascript代碼來最大限度地減少客戶端的額外處理。無論哪種方式,這將消除對額外請求的需要,並且不重要的是延遲處理。

如果文件是而不是保證被使用,並且PHP捲曲用作類似於未知輸入的反向代理的東西,那麼暴露端點並且AJAX處理它可能會更有意義。如果您使用的是RDBMS,那麼在數據庫的臨時表中使用某種形式的CLOB字段可能會更有意義,但除此之外,臨時文件或只是內存中的對象將根據您的需要工作。

+0

是的,在任何情況下都需要該文件。頁面的主要功能是編輯元數據以解析CSV。通過實時視圖,我可以向用戶顯示更改如何影響csv解析。問題是csv文件可能變得非常大。我想我會在客戶端上顯示100行,這應該足夠了。我將使用https://code.google.com/p/jquery-csv/編輯數據。什麼是表示csv文件的最佳字符串?只是一個包含所有數據的JS變量? – vo1d

+0

我會堅持一個與你想要做的事情相匹配的結構。聽起來你最好用至少一個字符串數組,其中每行文本都是數組中的一個索引。然後,您可以在這些行內使用分隔符標記之類的東西,這些標記將比在二維數組或更豐富的DOM元素中隨機移動數據更容易管理並且可能更具性能。 –

+0

這個庫看起來也許並不需要:如果你通過PHP進行篩選,那麼你應該有這樣做的繁重工作。 –

2

你並不需要創建一個服務器臨時文件,你可以使用簡單的PHP在javascript

<script>alert("<?php echo $curlresult;?>")</script>