我如何发送数据表格?

时间:2016-04-22 17:47:18

标签: php jquery

当我尝试序列化数据表单时,我遇到了问题。

这是代码。我有一个包含表单的page1.php。当表单通过AJAX发送时,我检索表单数据,然后将其发送到page2.php。

当它尝试序列化文件字段时,会出现问题。

page1.php(包含表格)

$(document).ready(function(){
  $("#enviar").click(function(e){
      e.preventDefault();
          $.ajax({
              type: "POST",
              url: "processar_updateUser.php",
              data: $("form").serialize(), 
              success: function(data){
                   alert(data);
              }
          });
      return false; 
  });
});

page2.php(处理表单数据)

<?php
   $personal_name = addslashes(htmlentities($_POST['personalname']));
   $name          = addslashes(htmlentities($_POST['name']));
   $surname       = addslashes(htmlentities($_POST['surname']));
   $concatnom     = $name.".".$surname;
   $password      = addslashes(htmlentities($_POST['password']));
   $adegree       = addslashes(htmlentities($_POST['adegree']));
   $initials      = addslashes(htmlentities($_POST['initials']));
   $n             = substr($name,0,1);
   $c             = substr($surname,0,1);
   $initials      = $n.$c;
   $email         = addslashes(htmlentities($_POST['email']));// que sigui cadena+@"+cadena+.+cadena
   $telephone     = addslashes(htmlentities($_POST['telephone']));  //numero y nomes 9
   $signature     = addslashes(htmlentities($_FILES['signature']['name']));//i have used $_POST, but dind't work
?>

2 个答案:

答案 0 :(得分:0)

试试这个(根据你的html替换JQuery选择器):

var formData = new FormData();
formData.append('personalname', $("#personalname").val());
formData.append('name', $("#name").val());
formData.append('surname', $("#surname").val());
formData.append('password', $("#password").val());
formData.append('adegree', $("#adegree").val());
formData.append('initials', $("#initials").val());
formData.append('email', $("#email").val());
formData.append('telephone', $("#telephone").val());
formData.append('signature', $('#signature')[0].files[0]);

$(document).ready(function(){
  $("#enviar").click(function(e){
      e.preventDefault();
          $.ajax({
              type: "POST",
              url: "processar_updateUser.php",
              data: formData, 
              success: function(data){
                   alert(data);
              }
          });
      return false; 
  });
});

这可能很乏味,但这是我设法将图像发送到后端的方式

方法$('#signature')将返回一个JQuery输入对象。

这:$('#signature')[0]返回HTML输入标记。

这:$('#signature')[0].files返回一个JQuery对象,其中包含您选择的所有文件。

最后,这个:$('#signature')[0].files[0]将返回JQuery对象中的第一个文件......

我假设您只接受一个文件...如果没有,您必须将formData中存储的每个文件追加到$('#signature')[0].files

希望得到这个帮助。

此致

答案 1 :(得分:0)

前段时间我遇到了同样的问题。我将此插件 jQuery Form Plugin 用于混合表单 - 数据加文件,或者在其他情况下使用此blueimp,但这只用于文件上传。

我经常使用它们,它们像魅力一样工作,易于整合。

希望这会有所帮助。