2012-08-23 47 views
2

我試圖將我的DHTMLX網格導出爲CSV文件。我有它設置的框架,但我正在運行一個問題,如果我嘗試導出超過25行,它會失敗。沒有錯誤信息或任何東西。下面是我的代碼:將CSV字符串從Javascript傳遞到PHP

的Javascript

myGrid.csvParser = myGrid.csvExtParser; 
myGrid.setCSVDelimiter('|'); 
myGrid.csv.row = "endOfRow"; 

var gridCsvData = myGrid.serializeToCSV(); 

$.post("data/export.php?csvdata="+gridCsvData); 

PHP

$csvData = $_REQUEST['csvdata']; 

$csv = explode('endOfRow',$csvData); 

$myfile = "grid.csv"; 

$fh = fopen($myfile, 'w') or die("can't open file"); 

foreach($csv as $line) { 
    fputcsv($fh, explode('|',$line),',','"'); 
} 

fclose($fh); 


//Redirect output to a client's web browser (csv) 
header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=grid.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

readfile('grid.csv'); 

任何幫助表示讚賞。我認爲這是POST上的某種大小限制問題,我試圖在.htaccess文件中將限制修改爲20MB。正如我所說,這隻適用於幾行(< 25),但是一旦我嘗試導出不止一次,它永遠不會生成.csv文件。

回答

2

我想$.post(來自jQuery的權利?)不處理這樣一個巨大的網址。你應該添加一個參數,可以作爲HTTP POST查詢的參數:

$.post(
    "data/export.php", 
    { 
    csvdata: gridCsvData 
    } 
); 
$.post(
    "data/export.php", 
    { 
    csvdata: gridCsvData 
    } 
); 
+0

作品非常感謝man..still無法讓它提示用戶保存該文件。任何想法,爲什麼不會彈出?它只是在不提示的情況下保存在服務器上。 – ad2387

+0

你是否用'application/csv'代替'Content-type'中的'text/csv'? – j0k

+0

是的,我在這兩者之間來回走動。沒有什麼區別,我可以看到 – ad2387

相關問題