2013-07-10 54 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)或僅在