2013-08-17 129 views
0

我正在考慮將json對象發佈到PHP頁面的網頁,然後PHP頁面會生成一些數據並將數據導出到本地文件。因爲在第一步中,數據太大而無法通過URL,所以我需要使用JSON。但是,當我以AJAX方式將JSON對象傳遞給PHP時,不會觸發下載。我想知道如何下載可以觸發。發佈JSON到PHP,然後觸發從PHP下載文件?

//the code will not trigger a download from PHP 
var xmlhttp; 
if (window.XMLHttpRequest) 
    xmlhttp = new XMLHttpRequest(); 
else 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
xmlhttp.open("POST", "export.php"); 
xmlhttp.setRequestHeader("Content-type", "application/json", true); 
xmlhttp.send(JSON.stringify(obj)); 

我可以接收JavaScript中的回顯數據,但是在JavaScript中創建本地文件比在PHP中創建更復雜。

回答

0

我找到了解決方案:創建表單並使用JavaScript動態創建隱藏的輸入字段。然後使用提交按鈕在新打開的窗口中將表單發佈到php文件中。

0

請勿使用xmlhttprequest,只需將您的json表單提交給PHP,並在PHP中指定正確的Content-Type即可。

+0

但這並不是我的意思。我沒有提交表單到php,但傳遞了大量的數據(比URL更長)到php,然後期望從php代碼中下載文件。例如,用戶可以從網頁上的數據庫表中選擇一些行,然後單擊一個名爲「將所選行導出到文件」的按鈕來觸發下載。 – HQXU85

+0

您正在發送HTTP POST請求,與表單做的事情相同。你不需要將它添加到HTML中,你可以從JS提交它,所以它仍然是從用戶隱藏的。我不認爲你可以按照你想要的方式做到這一點。您可能需要生成一個新選項卡或更改JavaScript中的位置以便瀏覽器正常顯示下載。 – pajaja