使用AJAX发布未发送到PHP的数据

时间:2015-12-14 11:44:41

标签: php ajax post header

我想用ajax将值发送到php,将值保存在txt文件中,并为用户提供保存文件的选项。

我收到错误消息: 警告:无法修改标题信息 - 已在 / Applications / MAMP /中发送的标题(输出从/Applications/MAMP/htdocs/randomColors/webroot/incl/theme.php:26开始) 26 上的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">

单击它时,“data-id”中的值将通过exportColors-function提交给export.php。现在我只使用{data:'John'}作为占位符。

exportColors-function由此代码触发(放在for循环中)

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

2 个答案:

答案 0 :(得分:3)

在此行的代码中:

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

尝试不用():

 data: {data: 'John'},

答案 1 :(得分:0)

您能否发布用于发布数据的表单?您的错误表明您没有任何名为&#39;数据&#39;的索引。在你的$ _POST数组中。无论如何,你无法以你的方式检查价值是否存在,正确的方法是:

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

而不是:

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

通过这种方式,您可以将poste值设置为变量,然后对其进行检查

请注意,这只是指向此问题,而不是解决您所面临的错误。发布您的HTML,我们会尽力为您提供帮助。