如何使用ajax和jquery在php上传文件?

时间:2016-11-18 16:22:58

标签: php jquery ajax

  

这是我的html页面的表单部分。

  <form action="#" method="post" enctype="multipart/form-data">
                        <div class="form-group">
                            <div class="input-group input-group-sm">
                                <span class="input-group-addon"> 
                                <span class="glyphicon glyphicon-user"></span></span>               
                                <input type="text" class="form-control" name="name"  id="name" placeholder="Full Name"/>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="input-group input-group-sm">
                                <span class="input-group-addon"> 
                                <span class="glyphicon glyphicon-user"></span></span>               
                                <input type="text" class="form-control" name="user"  id="user" placeholder="User Name"/>
                            </div>
                        </div>
                <div class="form-group">
                    <div class="input-group input-group-sm">

                        <span class="input-group-addon">  
                         <span class="glyphicon glyphicon-envelope"></span></span>

                     <input type="email" class="form-control" name="email"  id="email12" placeholder="Email"/>
                    </div>
                    <br/>               

                    <div class="form-group">
                        <div class="input-group input-group-sm">                        
                            <span class="input-group-addon"> 
                            <span class="glyphicon glyphicon-user"></span></span>
                            <div class="form-control">
                            <label class="radio-inline">
                            <input type="radio" name="gender" class="gender" value="male">Male
                            </label>
                            <label class="radio-inline">
                            <input type="radio" name="gender" class="gender" value="female">Female
                            </label>
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                            <div>Please, upload your profile photo :<br></div>
                            <div class="input-group input-group-sm">
                                <span class="input-group-addon"> 
                                <span class="glyphicon glyphicon-user"></span></span>               
                                <input type="file" class="form-control" name="pic"  id="pic"/>
                            </div>
                    </div>

                    <div class="form-group">
                    <div class="input-group input-group-sm">                            
                        <span class="input-group-addon">  
                        <span class="glyphicon glyphicon-lock"></span></span>           
                        <input type="password" class="form-control" name="pass"  id="pass123" placeholder="Password"/>
                    </div>                    
                    </div>

                    <div class="form-group">
                            <div class="input-group input-group-sm">
                                <span class="input-group-addon"> 
                                <span class="glyphicon glyphicon-user"></span></span>               
                                <input type="text" class="form-control" name="mob" maxlength="10"  id="mob" placeholder="Mobile no."/>
                            </div>
                    </div>

                    <div class="form-group">
                            <div class="input-group input-group-sm">
                                <span class="input-group-addon"> 
                                <span class="glyphicon glyphicon-home"></span></span>               
                                <textarea class="form-control" rows="2" cols="15" name="address"  id="address" placeholder="Address"></textarea>
                            </div>
                    </div>

                    <div class="controls controls-row">
                       <!--<form method="POST" >-->
                    <div class="controls controls-group"></div>
                    </div>
                    <div class="modal-footer">  
                        <span id="err1" class="form-alert" style="color:red;float:left;"></span>                        
                        <input type="submit" class="btn btn-success" id="save"  value="Register" name="regis" />                
                        <button type="button" class="btn btn-success" data-dismiss="modal">Cancel</button>
                    </form>

<!-- Ajax Registeration Submit -->
<script>    
    $(document).ready(function(){
                    $("#err1").hide();
            $("#save").click(function(){

                    var user =$('#user').val();
                    var email =$('#email12').val();
                    var pass =$('#pass123').val();
                    var name =$('#name').val();
                    var gender =$('.gender:checked').val();
                    var pic =$('#pic').val();
                    var mob =$('#mob').val();
                    var address =$('#address').val();

    var dataString = 'user='+ user + '&email='+ email+'&pass='+ pass + '&name=' + name + '&gender=' + gender + '&pic=' + pic + '&mob=' + mob + '&address=' + address;
    //alert(dataString);
    if(email==''||pass==''||user==''||name==''||gender==''||pic==''||mob==''||address=='')
   {
        $("#err1").html(" Enter the  details before submit ");
        $("#err1").hide().slideDown();
    }
    else
    {

    // AJAX Code To Submit Registeration Form.
    $.ajax({
    type: "POST",
    url: "msg_ajax.php",
    data: dataString,
    cache: false,
    success: function(result){
    //  $("#err").show();
    $('#err1').html(result);
    $("#err1").hide().slideDown();
                    /*setTimeout(function(){
                    $("#err1").hide();        
              }, 3000);*/

    }
    });
    }
    return false;


        });

    });

    </script>
  

msg_ajax.php

<?php
$user=$_POST['user'];
$email=$_POST['email'];
$pass=$_POST['pass'];
$name=$_POST['name'];
$gender=$_POST['gender'];
$pic = $_FILES['pic']['name'];
$tmp_pic = $_FILES['pic']['tmp_name'];
$imageFileType = pathinfo($pic,PATHINFO_EXTENSION);
$address=$_POST['address'];
$phone=$_POST['mob'];
$mob="/^\d{10}$/";      



                if(!preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/', $email)){
                    echo "Please enter a valid email";
                }
                elseif($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif"){
                     echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
                }
                elseif($_FILES["pic"]["size"] > 100000) {
                    echo "Sorry, your file is too large.";
                }
                else
                {                   
                $query="select * from  user where  email='$email'";
                $select12=$db->query($query);           
                $query_user="select * from   user where  user_name='$user'";
                        $sel_user=$db->query($query_user);

                    //  echo  mysqli_num_rows($select12);
                        //echo  mysqli_num_rows($sel_user);

                    if(mysqli_num_rows($sel_user)>0)
                    {
                        //echo  mysqli_num_rows($sel_user);
                        //echo $email;
                        //echo mysqli_num_rows($select12);
                        echo "This user name already exits";                            
                    }
                    else{
                                if(mysqli_num_rows($select12)>0)
                                {

                        echo "This email address already exists";
                                }
                                elseif(!preg_match($mob, $phone)){
                                    echo "Please enter a valid mobile number";
                                }else{
                        $q="INSERT INTO user(user_name,email,password,join_date,status,name,gender,address,mobile) VALUES('$user','$email','$pass','".date('Y-m-d')."','0','$name','$gender','$address','$phone')";

                    $insert=$db->query($q);

                                    //echo "your data successfully inserted";

                                    //$_SESSION['user']=$user;      

                                    //sleep(2);
                                    echo "Registered Successfully. Please Log-in";
                                    //echo "<script>window.location='user/index.php'</script>";                             

                        }

                    }
                    }   
        mysqli_close($db);

?>

当我提交表单时出现此错误: 注意:未定义的索引:第24行的D:\ wamp \ www \ my_library_management_system \ msg_ajax.php中的图片

  

请帮我解决这个问题。我不明白它说$ pic变量是未定义的。如何通过ajax和jquery传递文件?

0 个答案:

没有答案