2012-10-03 91 views
0

我有一個表單,我使用jQuery $.post方法發送到服務器。我派幾個領域的東西,如:使用jQuery和Ajax上傳文件

var myName = "Pedro"; 
var myDescription = "Description of Pedro"; 

$.post("~/insert_user", { name: myName, description: myDescription }, function(data){ 
    alert("Successfully inserted " + data.name + " in DB"); 
}, "json"); 

這個偉大工程,爲我取值insert_user.php和治療並插入數據基礎。

如果我需要在我的表單中添加一個字段以讓用戶上傳圖片,該怎麼辦?

我會怎麼做,在我$.post電話,我將如何得到它在PHP?

我使用Symfony2.0,順便說一下,以防萬一它改變的東西。但重要的部分是如何將文件類型字段添加到ajax調用中。

在此先感謝。

佩德羅

+0

通過Ajax發送該圖像的路徑'insert_user.php'和執行file_upload有 –

+1

以及如何insert_user.php將訪問用戶系統上的文件? – S3Mi

+0

我不認爲這是解決方案。 – ElPiter

回答

0

製作的iframe,並把表格在裏面,提交表單,瞧。或者你可以使用這些AJAX File upload scripts

+0

謝謝。但問題是如何將已經正在運行的$ .post調用與提交文件(本例中爲圖像)結合起來。我真的不知道該怎麼做。 – ElPiter

1

一個,你會發現這將是一個更容易使用預建的jQuery插件。我最喜歡的是uploadify http://uploadify.com

其簡單和易於使用,它會爲你節省很多時間試圖找出你自己的<>

$。員額的方法是一樣的代碼塊波紋管。爲了讓你做到你需要的東西,你需要改變它來使用這個至少,然後事情會變得更簡單。因此,通過改變$。員額該

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

然後在阿賈克斯塊的contentType添加啓動參數:「多/表單數據」或嘗試mime類型(不能記得這麼清楚),並在數據:$( 「#form」)。serialize(),這應該工作。

,請告訴我,如果它不工作

--New編輯LOL--請原諒我盲目的編碼,你可能需要測試這

我做了些研究,並跨越這來了。你需要建立這個陣列,它在你的Ajax塊

var files = new FormData($('#fileinputid'));  
jQuery.each($('#fileinputid')[0].files, function(i, file) { 
    files.append(i, file); 
}); 

添加到數據。如果我讀是準確的,你應該能夠通過數組與AJAX數據的其餘部分。雖然我不完全確定如何將它添加到序列化的數據。

請測試這個,讓我知道。如果它不帶病上班爲你做一個完整的JavaScript腳本測試,然後張貼在這裏

+0

謝謝。但問題是如何將已經正在運行的$ .post調用與提交文件(本例中爲圖像)結合起來。我真的不知道該怎麼做。 – ElPiter

+0

請查看以上 – Ryan

+0

好我的編輯。現在我明白了:)。那麼,我已經傳遞給一個$ .ajax模型,並繼續工作。所以第一階段成功了。現在的問題是:(來自jQuery文檔)「來自文件選擇元素的數據未被序列化。」所以當我去$(「#myForm」)。serialize()時,它不會序列化圖像數據。那麼......還有其他建議嗎? – ElPiter