鍍金池/ 問答/PHP  HTML/ ajax php如何實現(xiàn)文字和文件的同時上傳?

ajax php如何實現(xiàn)文字和文件的同時上傳?

新手,
我想通過ajax php實現(xiàn)文字和文件的同時上傳。
問下該如何實現(xiàn)?
我嘗試的方法是獲取input的file然后放在data里ajax傳出去但是失敗了。

html:

<form action="" method="post"
        enctype="multipart/form-data">
            <h4>曲名</h4>
            <input type="text" name="name" id="uploadname" placeholder="請輸入曲名">
            <h4>歌手</h4>
            <input type="text" name="singer" id="uploadsinger" placeholder="請輸入歌手">
            <h4>請選擇.gp3/.gp4/.gp5/.gpx文件:</h4>
            <input type="file" name="file" class="uploadbutton1" id="uploadfile">
            <input type="submit" name="submit" value="Submit" id="upload-newtab-button"/>
        </form>

js部分:

$("#upload-newtab-button").click(function(){
            $.ajax(  
            {  
                url:"upload.php",  
                type: "POST",  
                processData:false,  
                contentType:false,  
                data:{file:$("#uploadfile").files[0],name:$("#uploadname").val(),singer:$("#uploadsinger").val()}
                success:function(data){                        
                    alert(data);  
                }  
            }  
            );   
        });

php部分:

<?php


$upload_path = $_SERVER['DOCUMENT_ROOT']."./uploads/";
$dest_file = $upload_path.basename($_FILES['myfile']['name']);

if(move_uploaded_file($_FILES['file']['tmp_name'],$dest_file)){
    echo "文件已上傳至服務(wù)器根目錄的upload目錄下";
}else{
    echo "上傳錯誤".$_FILES['myfile']['error'];
}

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "guitartabs";
$name=$_POST["name"];
$singer=$_POST["singer"];
         
// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
   } 
$sql_insert = "insert into tabs(name,singer) values ('$name','$singer')";
$res_insert = $conn->query($sql_insert);

if($res_insert) 
{ 
echo "注冊成功!"; 
} 
else 
{ 
echo "系統(tǒng)繁忙,請稍候"; 
}          
        
$conn->close();
?>
回答
編輯回答
巴扎嘿

$sql_insert = "insert into tabs(name,singer) values ('$name','$singer')";去掉單引號

2017年9月13日 15:37
編輯回答
別瞎鬧

使用FormData

var formdata = new FormData();
formdata.append("name",name);
formdata.append("file" , $("#fileupload")[0].files[0]);
$.ajax({
    url: "/upload/file",
    type: 'post',
    data:formdata,
    processData : false, //不處理發(fā)送的數(shù)據(jù),因為data值是Formdata對象,不需要對數(shù)據(jù)做處理
    contentType : false,
    success: function(ret) {
        // code
    }
})
2017年10月14日 08:33