gpt4 book ai didi

javascript - JavaScript 中数组为非 null,但 Ajax 后 PHP 的 $_POST 中数组为 null

转载 作者:行者123 更新时间:2023-11-28 00:28:29 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的下载计数脚本,将数据发送到 MySQL 数据库。我创建了一个关联数组,通过 Ajax 发送到 PHP 脚本,但是,尽管我已经确认该数组包含我在 JavaScript 中放入的内容,但 $_POST 变量在我的 PHP 中为空。

这就是我的 JavaScript 函数的样子:

function download(name) {
var post = {};
post['fileName'] = name;
$.ajax({
url: "phpScripts/downloadCounter.php",
type: 'POST',
data: post
});
window.location = "downloads/" + name;
}

然后,在我的 PHP 脚本 (downloadCounter.php) 中,我用它来检查 $_POST 变量:

ob_start();
var_dump($_POST);
error_log(ob_get_clean());
error_log($_POST["fileName"]);

var_dump 发布一个长度为 0 的数组,尝试直接检索数据会导致错误,指出索引“fileName”未定义。

相关页面是http://strongjoshua.com/projects/software/line_counter 。按下下载按钮后,Chrome 会向脚本文件报告一个 POST,返回代码为 302(已找到文件)、实际下载文件的 GET,最后再次对脚本进行另一个 GET。 这使得 POST 请求看起来只达到了找到文件的程度,而没有实际执行它......为什么/如何发生这种情况?

我之前已经完成过这种形式的 Ajax 请求,并且它一直有效,所以我不知道为什么它现在不起作用。我在 EasyDNS 托管的服务器上使用 PHP 5.6的网络托管。

最佳答案

您的服务器设置为自动重定向请求
http://strongjoshua.com/phpScripts/downloadCounter.php

http://strongjoshua.com/phpScripts/downloadCounter

现在,由于浏览器使用 GET 方法来跟踪此类重定向,因此当您的脚本最终被“调用”时,不再有 POST 数据。

简单地改变

$.ajax({
url: "phpScripts/downloadCounter.php",

首先使用“正确”的地址,

$.ajax({
url: "phpScripts/downloadCounter",

– 这样,服务器就不需要首先重定向到“最终”地址,您的脚本调用的请求方法保持 POST – 并且您可以在 中获取数据$_POST 根据需要。

关于javascript - JavaScript 中数组为非 null,但 Ajax 后 PHP 的 $_POST 中数组为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29244569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com