我正在使用PHP和jQuery。我有 2 个文件
test.php
<script>
$(document).ready(function(){
$(".form-register").submit(function (e) {
var form_data = $(this).serialize();
e.preventDefault();
$.ajax({
type: "POST",
url: "test2.php",
data: form_data,
dataType: 'json',
success: function(){
alert(form_data);
}
});
});
});
</script>
<form class="form-register">
<input name="email" type="text"/>
<input name="name" type="text"/>
<input type="submit" name="register"/>
</form>
第二个文件test2.php
:
<?php
if(isset($_POST['register'])){
echo json_encode('Message from test2.php');
}else{
echo json_encode('post no received');
}
似乎我无法检索$_POST['register']
因为当我检查alert(form_data);
时,仅显示email
和name
。
我有什么办法可以得到$_POST['register']
吗?
将值属性添加到提交按钮并使用$('form').serializeArray()
.尝试:
$(".form-register").submit(function (e) {
var formData = $(this).serializeArray();
var name = $(this).find("input[type=submit]").attr("name");
var value = $(this).find("input[type=submit]").val();
formData.push({ name: name, value: value });
//now use formData, it includes the submit button
$.ajax({
type: "POST",
url: "test2.php",
data: formData,
dataType: 'json',
success: function(){
alert(form_data);
}
});
});
.serialize()
和 .serializeArray()
都不会序列化提交按钮值。
.serialize()
。没有序列化提交按钮值,因为表单不是使用按钮提交的。
.serializeArray()
。没有序列化提交按钮值,因为表单不是使用按钮提交的。
只有成功的控件才会序列化。
输入提交元素实际上是一个成功的控件,但如上所述,由于表单不是使用提交按钮提交的,因此 jquery 序列化不会包含输入提交值属性。
如果要使用.serializeArray()
只需将输入提交元素名称和值属性值作为对象添加到序列化数组中,如下所示。
$(document).ready(function(){
$(".form-register").submit(function (e) {
var form_data = $(this).serializeArray();
var $submit = $(this).find('input[type="submit"]');
form_data.push({name: $submit.prop("name"), value: $submit.val()});
console.log(form_data);
// do your ajax request here...
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="form-register">
<input name="email" type="text"/>
<input name="name" type="text"/>
<input type="submit" name="submit" value="register"/>
</form>
如果要使用.serialize()
只需将提交元素的值和名称属性的值添加到.serialize()
方法创建的文本字符串中。请注意,字符串需要进行 URL 编码。
$(document).ready(function(){
$(".form-register").submit(function (e) {
var form_data = $(this).serialize();
var $submit = $(this).find('input[type="submit"]');
form_data = form_data + "&" + $submit.prop("name") + "=" + $submit.val();
console.log(form_data);
// do your ajax request here...
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="form-register">
<input name="email" type="text"/>
<input name="name" type="text"/>
<input type="submit" name="submit" value="register"/>
</form>