我有一个表单html然后我有2个输入(输入文本和输入文件) 我的问题输入文字无法发送帖子上传php。 我使用jquery ajax发布数据
upload.php的
<?php
$nama = $_POST['name'];
$filename = $_FILES['file']['name'];
var_dump($nama);
var_dump($filename);
形式
<form method='post' action='' enctype="multipart/form-data">
<input type="text" class="form-control" id="name" name="name" placeholder="Enter name" required />
Select file : <input type='file' name='file' id='file' class='form-control' ><br/>
<input type='button' class='btn btn-info' value='Upload' id='upload'>
</form>
<script type="text/javascript" >
$(function() {
$("#upload").click(function() {
var name = $('#name').val();
var fd = new FormData();
var files = $('#file')[0].files[0];
fd.append('file',files);
$.ajax({
type: "POST",
url: "upload.php",
dataType: 'text', // what to expect back from the PHP script, if anything
cache: false,
contentType: false,
processData: false,
data: fd,
success: function(){
}
});
return false;
});
});
</script>
答案 0 :(得分:0)
只需删除dataType:text即可。或者您可以根据您的要求使用dataType:“json”。那么,您可以在此处阅读有关此数据类型的更多信息:$.ajax - dataType
对于name参数,您缺少将该变量附加到fd变量中。
所以,你的脚本应该是这样的:
<script type="text/javascript" >
$(function() {
$("#upload").click(function() {
var name = $('#name').val();
var fd = new FormData();
var files = $('#file')[0].files[0];
fd.append('file',files);
fd.append('name',name); // you were missing this, that's why $_POST['name'] was blank
$.ajax({
type: "post",
url: "upload.php",
cache: false,
contentType: false,
processData: false,
data: fd,
success: function(){
}
});
return false;
});
});
</script>
现在尝试将下面的代码打印到upload.php文件中:
<?php
echo $nama = $_POST['name'];
echo $filename = $_FILES['file']['name'];
?>