如何使用Ajax、PHP和jQuery将多部分/表单数据发送到服务器?

如何使用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

我有一个表单,我需要发送用户的名字和他的个人资料图像。因此,我使用HTML和Bootstrap创建了下面的表单-

 <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我很高兴听到这个消息。你可以通过投票和接受答案来鼓励我们