2013-07-10 53 views
0

所以我一直在尝试并尝试使用PHP和HTML来使用PHP,AJAX和HTML来上传statusupup的网站上传和不显示图像,因此它不必制作全新的页面加载成功更新数据库等,它很好,直到'我不得不一起上传图像。通过AJAX将文件上传到服务器

我的JavaScript/jQuery的/ AJAX代码如下所示:

$(function() { 
$("#statusupdate").on('submit', function (e) { 
    var category = $("#statusupdate input[type=radio]:checked").val(); 
var text = $("textarea#statusupdate_text").val(); 
var file = $("input#file").val(); 
$.ajax({ 
type: "POST", 
url: "snippets/post_statusupdatequery.php", 
data: { category : category, text : text, file : file }, 
success: function() { 
$('#statusupdate').html("<div id='success_status'></div>"); 
$('#success_status').html("<h2>Post Submitted!</h2>") 
.append("<p>We will be in touch soon.</p>") 
.hide(); 
} 
}); 
    return false; 
e.preventDefault(); 
}); 
}); 

http://pastebin.com/fSGFa32D 和我的PHP代码如下所示:

if (!empty($_FILES['userfile'])) { 
$raw_text = $_POST['text']; 
$text = mysql_real_escape_string($raw_text); 
$uploaddir = '/var/www/images/imageupdate/'; 
$filename = "".$id."-".$time.""; 
$uploadfilenam = basename($filename); 
$uploadfilename = $uploadfilenam.".png"; 
$uploadfile = $uploaddir.$uploadfilename; 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
mysql_query("INSERT INTO imagepost 
    (userid, text, image, date) 
    VALUES('$id', '$text', '$uploadfilename', '$time') ") or die(mysql_error()); 
      } 
} else { 
    echo '<script>alert(" Select a file to upload! ");</script>'; 
    } 

http://pastebin.com/6Yam6Mtd

目前据我所知,它在PHP代码中的第一个if语句失败,我已经搜索了所有的计算器,但我找不到一个专业版与此相似的瑕疵。

请帮助,我错过了什么让文件通过AJAX发送到PHP?

+0

请在此处贴上您的代码。 – samayo

+0

@Simon_eQ完成! –

回答

0

你不能使用这个JavaScript语法

var file = $("input#file").val(); 

使用jQuery的AJAX form与在其文件中的元素提交表单上传文件。也保证了形式所具有的enctype=multipart/form-data

为了让AJAX形式先工作,你设置你的HTML表单

<form id="myform" ...>.........</form> 

然后,你可以通过简单地做

$('#myform').ajaxForm(); //you can pass the same options as you would pass to $.ajax(); 
jquery代码附加到表单提交事件
+0

表单确实具有正确的enctype。但我并不真正了解ajax表单的工作方式,即使在查看示例之后。在测试之后,我目前只有链接的网站的首页上有JS代码,所以当我点击提交按钮时,我得到“感谢您的评论!”但它没有上传任何东西或这样的内容,我很抱歉,但我不太明白ajax表单的工作方式。 –

+0

看看我的更新回答 – DevZer0

+0

只有两件事情我现在没有得到1.我应该把$('#myform')。ajaxForm();?在提交(onclick)或仅在