我有一个非常艰难的时间。我正在尝试使用ajax jquery将我的值从表单发布到php文件。我确实在我的控制台中找到了值,但是当我执行ajax方法时,它不会发布值。
Jquery代码
var formData = [];
function formValidate() {
var error = false;
$(".form .required").each(function(k, v) {
$(v).removeClass("error");
if ($(v).attr("type") === "radio" && $(v).prop("checked")) {
formData[$(v).attr("id")] = $(v).val();
} else if ($(v).val() === "") {
$(v).addClass("error");
//$(v).prop("placeholder”,”Required.”);
error = true;
} else {
formData[$(v).attr("id")] = $(v).val();
}
});
console.log(formData); //all data is successful shown
return error;
}
// send function
function formSend() {
$.ajax({
type: 'POST',
url: "include/mail.php",
data: formData,
dataType: "html",
encode: true,
success: function(response) {
alert(response);
},
error: function() {
$("form").hide();
}
});
event.preventDefault();
}
Html代码
<form action="" id="form-3">
<div class="container row">
<div class="col-md-4 col-xs-12">
</div>
<div class="col-md-4 col-xs-12">
<div class="form-group">
<input type="text" class="form-control required" name="naam" placeholder="Naam" id="naam">
</div>
<div class="form-group ">
<input type="text" class="form-control required" name="telnr" placeholder="Telefoon" id="telnr">
</div>
<div class="form-group">
<input type="email" class="form-control required" name="email" placeholder="E-mail" id="email">
</div>
</div>
</div>
</form>
我确实找到了值,如果我是console.log(formData)那么为什么不发布呢?
修改
在这里,您可以看到控制台日志的图像
发出请求时。 需要将值发送到mail.php
[![在此处输入图像说明] [2]] [2]
在这里,您可以看到如果我使用console.log
,则会显示formData答案 0 :(得分:1)
您应该使用serilize而不是单个字段值传递表单数据。请尝试以下代码:
jQuery代码:
var formData = $("form").serialize();
$.ajax( {
type: "POST",
url: "YOUR PHP FILE PATH",
data: formData,
dataType: 'json',
beforeSend: function () {
//do stuff progressing
},
success: function (resp) {
//do stuff after post
},
error: function (e) {
alert('error: ' + JSON . stringify(e));
}
});
PHP代码:
<?php
print_r($_POST); //it will print array with all form input field
?>
注意:设置表单action="javascript:void(0)"
答案 1 :(得分:1)
问题是formData
是 JSONArray - 但在ajax调用中,您需要提供 JSONObject 。因此,在验证函数中将formData
作为 JSONObject 启动,然后在其中推送键值。
重写formData
启动,如:
var formData = {};
它应该有用。