2015-12-14 87 views
2

我想發送值與ajax到PHP,將值保存在TXT文件,並給用戶選項來保存文件。發送數據沒有發送到PHP與AJAX

我得到的錯誤信息: 警告:不能更改頭信息 - 頭已經發出在(輸出開始/Applications/MAMP/htdocs/randomColors/webroot/incl/theme.php:26)/應用程序/ MAMP/htdocs中/ randomColors/Webroot公司/ palettes.php在線

我在做什麼錯?

function exportColors() {   
    $.ajax({ 
      type: "POST", 
      url: "palettes.php", 
      data: ({data: 'John'}), 
      success: function (data) { 

      } 
     }); 
} 

這是export.php代碼:

if (isset($_POST['data'])) 
{ 
$handle = fopen("file.txt", "w"); 
fwrite($handle, $_POST['data']); 
fclose($handle); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename('file.txt')); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize('file.txt')); 
readfile('file.txt'); 
exit; 
} 

涉及的HTML是一個div:

<div class="palettesDIV" data-id="220"> 

當被點擊 「數據ID」 的值會通過exportColors函數提交給export.php。現在我只使用{data:'John'}作爲佔位符。

的exportColors功能是通過這個代碼觸發(被放置在for循環)

palettesDIVArray[x].addEventListener('click', exportColors, false); 
+0

你在$ _POST ['data']'中有什麼你試圖轉儲它?在'export.php'中只需寫下'var_dump($ _POST ['data'])'看看它給了你什麼 – Armen

+0

你可以發佈你的表單來發布數據嗎?您的錯誤表明您的$ _POST數組中沒有任何名爲'data'的索引。 – Franco

+0

爲什麼你要導航到export.php'window.location.replace(「export.php」);'?你有迴應權嗎?當你打電話給你時,你的發佈數據是空的,所以不會返回 – Thamilan

回答

3

在這行代碼:

data: ({data: 'John'}), 

嘗試不使用():

data: {data: 'John'}, 
+0

已經嘗試過和沒有,但沒有區別。 – Joel

+0

@Normis說什麼是正確的,數據只能在括號中傳遞,而不能在括號中傳遞。但問題不在那裏。你現在得到哪個錯誤信息。 – Franco

0

您可以發佈您的表單用於發佈數據嗎?您的錯誤表明您的$ _POST數組中沒有任何名爲'data'的索引。反正你可以不檢查一個值的存在,你正在做的方式,正確的方法是:

if (isset($_POST['data'])) 
{ 
... 
} 

而不是:

$data = $_POST['data']; 
if (isset($data)) 
{ 

這樣你的郵政值asigning一個變量然後檢查它

請注意,這只是指出這個問題,並沒有解決你所面臨的錯誤。發佈您的HTML,我們會盡力幫助您。

+0

感謝您的提示!我改變了我的代碼並添加了html。 – Joel