我看过几个关于这个问题的帖子,但没有一个能解决我的问题。我正在使用XAMPP,在同一个文件夹中有一个htmlindex.html
和一个phpremote.php
。
我要发送给php的FormData
是使用JavaScript中的表单(basic_form
)创建的。由于console.log(...formdata);
按预期打印了Array[“mode”,“basic”],Array[“File”,File]
,它们是字符串和输入文件,因此构造良好。
但不幸的是,在php中,命令print_r($_post);
只输出array()
,命令var_dump($_post);
也输出array(0){}
。因此表单的内容似乎没有传递给PHP。
这里是html表单:
<body>
<div>
<form name="basic_form" enctype="multipart/form-data" action="remote.php" method="post">
<input type="text" id="mode" name="mode" value="basic"/>
<input type="file" id="file" name="file"/>
<input type="submit" id="submit_basic_input" name="submit_basic_input" value="Submit"/>
</form>
</div>
</body>
这里是提交表单的javascript:
<script>
var basic_form = document.forms["basic_form"];
basic_form.addEventListener('submit', e => {
e.preventDefault();
const url = 'remote.php';
const formData = new FormData(basic_form);
fetch(url, {
method: 'POST',
body: formData
}).then(response => {
console.log(response);
if(response["status"] == 200)
location.replace(response["url"]);
});
});
</script>
这里的php打印内容的表单:
<?php
var_dump($_POST);
$datapost = $_POST;
print_r($datapost);
print($datapost["mode"]);
?>
首先,调用fetch
,它发出POST请求
当您得到一个响应时,您将记录响应对象(它不包含任何有用的东西,特别是响应的主体将显示为可读流而不是字符串)。
该响应确实显示数组(1){[“mode”]=>string(5)“basic”}数组([mode]=>basic)basic
不过,您可以使用浏览器开发人员工具的“网络”选项卡看到它。
记录响应后,您设置location.replace(response[“URL”]);
,它发出GET请求(指向同一URL)并将浏览器导航到该请求。
GET请求是一个不同的请求,并且没有来自它的POST请求的请求体。
由于这是一个不同的请求,它得到了不同的响应,现在$_post
是一个空数组。
如果您想导航到响应,那么就去掉JavaScript。只需使用表单发出POST请求,并让浏览器呈现结果页面。
如果您想使用Ajax发出请求,那么:
response.text()
将数据从响应正文中取出,然后可能使用createElement
、appendChild
和friends将数据添加到当前文档)问题内容: 我的问题是,当上一页由表单创建时,后退按钮会使浏览器说“页面已过期”。 例: 第1页:使用搜索条件提交的表单($ _POST请求,该表单指向第2页) page2:接收$ _POST请求并显示结果(带有链接的用户列表,指向page3) 第3页:显示用户个人资料 现在,当访客单击浏览器中的“后退”按钮时,它将显示类似“页面已过期”的信息。 而是应该在没有警告的情况下显示前一页(第2页,带有
这是我的第一次。php页面是html部分。我有一个表单,包括一个div和一个submit按钮。我希望当点击按钮时,打开一个新页面(second.php)并显示div的内容(id=orderList) 这是javascript部分; 这是第二.php我想在div(id=confirmForm)中显示内容的地方 不管用,我该改什么?
我是新的PHP Codeigniter框架。我正在设计一个页面,其中我使用了一个链接。点击链接时,它调用一个jQuery函数,通过jQuery提交表单。我已经使用codeigniter表单验证方法进行服务器端验证,目前我已经禁用了客户端验证。 问题是,在这个过程中,当表单通过jQuery提交时,codeigniter表单验证方法不起作用。 但是如果我使用submit按钮来提交表单,那么codeig
我有一个来自WordPress的contact-template.php文件... 表单有4个必填字段... 现在,如果任何或所有必填字段为空,表单将不会提交,用户将在每个为空的文本输入字段下面得到“此字段是必填的”消息。-这完全是我想要的 我遇到的问题是,当填写所需的字段,并点击“提交”按钮时,会有10-15秒的停顿,然后显示“谢谢你,我们会尽快回复你”的消息。 由于这种暂停,用户会多次单击su
对此非常新,我目前正在尝试为我的网站创建一个登录系统。我已经创建了一个html日志表单,我计划使用该表单为用户创建帐户。我已经创建了一个php页面,其中包含了我要连接到服务器的代码,如下所示。 当我填写表单时,我没有得到任何输出。我不确定php代码是在错误的地方(它是作为一个单独的文件)还是不期望输出。提交表单时,当我在测试时手动提交时,数据库似乎不会发生变化。 我的最终目标是能够将用户添加到数据
每当我调试$_post时,它包含所有表单属性,但类型为'submit'和名称为'submitform'的输入字段除外。 如果我将输入字段的名称更改为“submit”,那么$_post也会显示提交输入的键值对。 我不知道它像苏。 有人能帮我解决这个吗?