如何使用Ajax、PHP和jQuery将多部分/表单数据发送到服务器?
我有一个表单,我需要发送用户的名字和他的个人资料图像。因此,我使用HTML和Bootstrap创建了下面的表单-如何使用Ajax、PHP和jQuery将多部分/表单数据发送到服务器?,php,jquery,ajax,multipartform-data,jsajaxfileuploader,Php,Jquery,Ajax,Multipartform Data,Jsajaxfileuploader,我有一个表单,我需要发送用户的名字和他的个人资料图像。因此,我使用HTML和Bootstrap创建了下面的表单- <form action="" method="post" id="demoForm" enctype="multipart/form-data"> <div class="form-group"> <label for="">Upload file</label> <input type
<form action="" method="post" id="demoForm" enctype="multipart/form-data">
<div class="form-group">
<label for="">Upload file</label>
<input type="file" name="file" id="file" class="form-control">
</div>
<div class="form-group">
<label for="">Your Name</label>
<input type="text" name="name" id="name" class="form-control">
</div>
<div class="form-group">
<input type="submit" name="save" id="save" value="Save" class="form-control btn btn-success">
</div>
</form>
<div id="result"></div>
现在,我已经在ajax.PHP文件中编写了以下PHP代码-
if(isset($_POST['save'])){
$name = $_POST['name'];
$file = $_FILES['file']['name'];
if(!empty($file) && !empty($name)){
$fileName = $_FILES['file']['name'];
$tmp = $_FILES['file']['tmp_name'];
$upload = move_uploaded_file($tmp,'uploads/'.$fileName);
if($upload){
echo "<h2>".$name.", your file has been uploaded successfully!</h2>";
}else{
echo "<h2>Something went wrong!</h2>";
}
}else{echo "File cannot be empty.";}
}else{echo "There is a problem";}
if(isset($\u POST['save'])){
$name=$_POST['name'];
$file=$_文件['file']['name'];
如果(!empty($file)&&!empty($name)){
$fileName=$_文件['file']['name'];
$tmp=$\u文件['file']['tmp\u名称'];
$upload=move_uploads_file($tmp,'uploads/.$fileName);
如果($上传){
echo“$name.”,您的文件已成功上载;
}否则{
echo“出了问题!”;
}
}否则{echo“文件不能为空。”;}
}否则{echo“有问题”;}
现在,问题是我没有从php文件中得到任何响应。换句话说,ajax.php文件没有从index.php文件接收通过ajax发送的数据。有人能帮我指出我犯了什么错误吗?如果有任何解决方案,也请与您分享。谢谢。如果(isset($\u POST['save']){
是问题所在
“提交”按钮只有在用于提交表单时才是成功的控件
您的JavaScript正在取消表单提交,并使用FormData
对象发出请求
测试是否存在其他数据,将保存为隐藏输入,或完全删除检查
您的PHP中有三个if
语句。其中只有一个有else
来输出错误。将带有消息的else
添加到另外两个语句中会使您更容易调试代码。if(isset($\u POST['save']){
就是问题所在
“提交”按钮只有在用于提交表单时才是成功的控件
您的JavaScript正在取消表单提交,并使用FormData
对象发出请求
测试是否存在其他数据,将保存为隐藏输入,或完全删除检查
在PHP中有三个if
语句。其中只有一个有else
输出错误。将带有消息的else
添加到另外两个语句中会使您更容易调试代码。您正在从Ajax提交表单,因此$\u POST['save']
变量将不会被设置。因此if块中的代码将不会运行。从PHP代码中删除这一行if(isset($\u POST['save']){
,然后像这样重写它
$name = $_POST['name'];
$file = $_FILES['file']['name'];
if(!empty($file) && !empty($name)){
$fileName = $_FILES['file']['name'];
$tmp = $_FILES['file']['tmp_name'];
$upload = move_uploaded_file($tmp,'uploads/'.$fileName);
if($upload){
echo "<h2>".$name.", your file has been uploaded successfully!</h2>";
}else{
echo "<h2>Something went wrong!</h2>";
}
}
$name=$\u POST['name'];
$file=$_文件['file']['name'];
如果(!empty($file)&&!empty($name)){
$fileName=$_文件['file']['name'];
$tmp=$\u文件['file']['tmp\u名称'];
$upload=move_uploads_file($tmp,'uploads/.$fileName);
如果($上传){
echo“$name.”,您的文件已成功上载;
}否则{
echo“出了问题!”;
}
}
您正在从Ajax提交表单,因此不会设置$\u POST['save']
变量。因此,if块中的代码将不会运行。请从PHP代码中删除这一行if(isset($\u POST['save']){
,然后像这样重写它
$name = $_POST['name'];
$file = $_FILES['file']['name'];
if(!empty($file) && !empty($name)){
$fileName = $_FILES['file']['name'];
$tmp = $_FILES['file']['tmp_name'];
$upload = move_uploaded_file($tmp,'uploads/'.$fileName);
if($upload){
echo "<h2>".$name.", your file has been uploaded successfully!</h2>";
}else{
echo "<h2>Something went wrong!</h2>";
}
}
$name=$\u POST['name'];
$file=$_文件['file']['name'];
如果(!empty($file)&&!empty($name)){
$fileName=$_文件['file']['name'];
$tmp=$\u文件['file']['tmp\u名称'];
$upload=move_uploads_file($tmp,'uploads/.$fileName);
如果($上传){
echo“$name.”,您的文件已成功上载;
}否则{
echo“出了问题!”;
}
}
谢谢你的时间。如果你能告诉我解决方案就更好了。谢谢你的时间。如果你能告诉我解决方案就更好了。哇!我无法想象该如何感谢你。你给了我一个解决方案,我花了将近24小时来调试。非常感谢。它奏效了。@AnjanTalukdar我很高兴听到这个消息。你可以通过投票和接受答案来鼓励我们哇!我无法想象如何感谢你。你给了我一个解决方案,我花了将近24小时来调试。非常感谢你。它奏效了。@AnjanTalukdar我很高兴听到这个消息。你可以通过投票和接受答案来鼓励我们