javascript - 如何让 php 页面从 html 页面接收 ajax 帖子
问题描述
我有一个非常简单的表单,其中有一个名字的输入字段。我捕获表单数据并使用标准的 jQuery 发布方法通过 ajax 将其传输到 PHP 页面。但是,我根本无法从 PHP 页面获得任何数据在服务器端捕获的任何响应。我不确定我做错了什么或遗漏了什么。
这是我的代码。
形式:
<form action="process.php" method="POST">
<div class="form-group">
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="firstName">First name</label>
<input type="text" class="form-control" name="firstName" id="firstName" placeholder="First name">
<div class="d-none" id="firstName_feedback">
<p>Please enter a first name.</p>
</div>
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
这是我的 Jquery Ajax 调用:
<script>
$(document).ready(function() {
$('form').submit(function(event) {
var formData = $("form").serialize();
console.log(formData);
$.ajax({
type: 'POST',
url: 'form.php',
data: formData,
dataType: 'json',
encode: true
})
.done(function(data) {
console.log(data);
});
event.preventDefault();
});
});
</script>
这是我的 PHP 页面:
if(isset($_POST['formData']))
$ajaxData = ($_POST['formData']);
echo $ajaxData;
{
}
解决方案
在您的 Ajax 函数中,您将 的内容传递formData
给服务器,尽管不是作为它们的原始输入名称,formData
而是作为它们的原始输入名称。
在这种情况下,您有:
<input type="text" class="form-control" name="firstName" id="firstName" placeholder="First name">
输入的名称是 firstName,因此您需要调用$_POST['firstName']
而不是$_POST['formData']
.
if (isset($_POST['firstName'])) {
$ajaxData = $_POST['firstName'];
echo $ajaxData;
}
这同样适用于您在表单中拥有的任何其他字段,因此,例如,有另一个输入名称lastName
意味着您必须调用$_POST['lastName']
才能访问它。
我在上面提供的 PHP 代码中也有一些放错位置的括号和括号。
推荐阅读
- javascript - 获取嵌套对象值并将其放在表头上
- javascript - “无法解决 myWebView”
- python-3.x - heroku python datetime 不包括 fromisoformat
- excel - 宏过滤列由两个不同的值 - Excel
- android - 按钮不应用强调颜色
- swift - iOS:@testable 在框架中看不到内部类
- google-cloud-datastore - Google DataStore - createdAt 属性和更新
- c# - Fluent Validation 未按要求进行验证
- machine-learning - 提高 LSTM 在文本分类上的性能(3 类问题)
- mysql - MIN() 日期时间记录检索 - MySQL