当我尝试序列化数据表单时,我遇到了问题。
这是代码。我有一个包含表单的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
?>
答案 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,但这只用于文件上传。
我经常使用它们,它们像魅力一样工作,易于整合。
希望这会有所帮助。