【问题标题】:Post data not sent to PHP with AJAX [duplicate]未使用 AJAX 将数据发送到 PHP [重复]
【发布时间】:2016-03-19 21:16:16
【问题描述】:

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

我收到错误消息: 警告:无法修改标头信息 - 标头已由 /Applications/MAMP/ 中的(从 /Applications/MAMP/htdocs/randomColors/webroot/incl/theme.php:26 开始的输出)发送htdocs/randomColors/webroot/palettes.php26

我做错了什么?

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”中的值将被提交到 export.php 与 exportColors 功能。现在我只使用 {data: 'John'} 作为占位符。

exportColors 函数由这段代码触发(放置在 for 循环中)

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

【问题讨论】:

  • 您在$_POST['data'] 中拥有的内容您是否尝试过转储它?在export.phpvar_dump( $_POST['data'] ) 看看它会给你什么
  • 能否请您发布用于发布数据的表单?您的错误表明您的 $_POST 数组中没有任何名为“数据”的索引。
  • 为什么要导航到 export.php `window.location.replace("export.php");`?你的反应对吗?当你调用它时,你的帖子数据是空的,所以返回它
  • 如果你要去export.php,为什么不直接使用php post?
  • 我已对其进行了更改,因此我不会导航到 export.php,而是将其发送到相同/当前页面 (palettes.php)。我还删除了代码 window.location.replace("export.php");

标签: php ajax post header


【解决方案1】:

在您的代码中的这一行:

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

尝试不使用 ():

 data: {data: 'John'},

【讨论】:

  • 有没有都试过了,没区别。
  • @Normis 所说的是正确的,数据只能在括号中传递,而不是括号。但问题不存在。您现在收到的是哪条错误消息。
【解决方案2】:

能否请您发布用于发布数据的表单?您的错误表明您的 $_POST 数组中没有任何名为“数据”的索引。无论如何,您无法按照自己的方式检查值的存在,正确的方法是:

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

而不是:

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

通过这种方式,您将 poste 值分配给变量,然后对其进行检查

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

【讨论】:

  • 感谢您的提示!我更改了代码并添加了 html。
猜你喜欢
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
相关资源
最近更新 更多