我正在使用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']
?
答案 0 :(得分:1)
添加值属性以提交按钮并使用$('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);
}
});
});
答案 1 :(得分:0)
.serialize()
和.serializeArray()
都不会序列化提交按钮值。
...没有提交按钮值被序列化,因为表单未使用按钮提交。
...没有提交按钮值被序列化,因为表单未使用按钮提交。
仅序列化successful controls。
输入提交元素实际上是一个成功的控件,但如上所述,由于表单未使用提交按钮提交,因此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...
});
});
&#13;
<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>
&#13;
如果要使用.serialize()
,只需将submit元素的value和name属性值添加到.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...
});
});
&#13;
<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>
&#13;