无法使用AJAX Jquery将值发布到php文件

时间:2016-03-31 10:08:07

标签: javascript php jquery ajax

我有一个非常艰难的时间。我正在尝试使用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)那么为什么不发布呢?

修改

在这里,您可以看到控制台日志的图像

The values need to be send to mail.php

发出请求时。 需要将值发送到mail.php

[![在此处输入图像说明] [2]] [2]

在这里,您可以看到如果我使用console.log

,则会显示formData

2 个答案:

答案 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 = {};

它应该有用。