Php 如何发送数据表单?
我在尝试序列化数据表单时遇到问题 这是代码。我有一个包含表单的page1.php。当表单通过AJAX发送后,我检索表单数据,然后将其发送到page2.php 当它试图序列化文件字段时,问题出现了 page1.php(包含表单) page2.php(处理表单数据)Php 如何发送数据表单?,php,jquery,Php,Jquery,我在尝试序列化数据表单时遇到问题 这是代码。我有一个包含表单的page1.php。当表单通过AJAX发送后,我检索表单数据,然后将其发送到page2.php 当它试图序列化文件字段时,问题出现了 page1.php(包含表单) page2.php(处理表单数据) 试试这个(根据html替换JQuery选择器): 这可能很乏味,但我就是这样设法将图像发送到后端的 方法$(“#签名”)将返回一个JQuery输入对象 这:$(“#签名”)[0]返回HTML输入标记 这:$(“#签名”)[0]。文件返回
试试这个(根据html替换JQuery选择器):
这可能很乏味,但我就是这样设法将图像发送到后端的
方法$(“#签名”)
将返回一个JQuery输入对象
这:$(“#签名”)[0]
返回HTML输入标记
这:$(“#签名”)[0]。文件
返回一个包含所有选定文件的JQuery对象
最后,这个:$(“#签名”)[0]。文件[0]
将返回JQuery对象中的第一个文件
我假设你只接受一个文件。。。如果没有,则必须将存储在$(“#签名”)[0]中的每个文件追加到formData
希望这有帮助
我不久前也有同样的问题。我将这个插件用于混合表单-数据加文件,或者在其他情况下使用这个插件,但这个插件仅用于文件上传
我经常使用它们,它们很有魅力,很容易集成
希望这会有所帮助 请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用密码\u hash()
。在散列之前,请确保您在它们上安装或使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。表单标记在哪里?序列化有什么问题?我得到了“未定义的索引”,当我检索ajax响应时,此错误被引用到签名变量jQuery的.serialize()
方法无法提交文件字段的内容,因为javascript无权访问文件内容。感谢您的回复。使用这部分代码:$('signature')[0]。文件[0]
,我将检索第一个文件的名称,例如$文件['signature']['name']',,因此如何检索tmp_名称,例如
$文件['signature']['tmp_名称']或大小..等等这段代码:$('signature signature'')[0]。文件[0]
让您可以像使用标准POST(而不是AJAX)一样发送文件。。。它起作用了吗?
$(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;
});
});
<?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
?>
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;
});
});