2012-03-02 24 views
1

我有哪裏文件輸入字段通過AJAX動態地插入一個表格。基本上我在做什麼是顯示錶單,用戶挑選哪個模板他們想要的,我拉這取決於他們選擇的模板一些額外的表單字段。其中之一有一個文件輸入。問題是,當我去與添加的文件輸入提交表單時,PHP $ _FILES數組是給我的4錯誤代碼,這意味着有沒有上傳的文件。有誰知道我需要做什麼來獲得這些文件上傳?Chrome的問題 - AJAX插入的文件輸入不上傳文件

我猜我必須做的JS東西方重新評估其形成我送字段,但我一直沒能找到任何東西。 (是的,我使用表上適當的加密類型。)

更新:這僅發生在Safari /鉻。我在別處讀到他們認爲這是webkit瀏覽器的安全功能。我不知道是否有此修復..

感謝所有

+0

更新:這僅適用於Chrome發生。在IE/Firefox中,我可以看到URL正確POST。 – efru 2012-03-03 00:51:42

回答

0

,如果你通過一個form.submit()方法發送的形式,應該有發送的文件沒有問題。你想通過ajax發送你的文件嗎?如果是的話,你不能直接。使用iframe,使用FileReader讀取文件數據並在您的ajax請求中發送原始數據。

+0

我並不想通過AJAJX發送文件本身。我只是把在輸入字段和

種植它們本身。然後它只是一個普通的POST表單提交。 – efru 2012-03-03 00:26:20

1

,如果你使用的是$。員額或form.submit不清楚()。如果你使用form.submit(),可能會出現其他問題。

否則,爲了通過AJAX文件發送到服務器,您需要使用Form Data對象。

這MDN頁Using FormDataObjects對如何使用它很好的例子。請注意,如果您使用jQuery,則需要將processData和contentType設置爲false。請參閱下文(摘自MDN頁面)。

var fd = new FormData(document.getElementById("fileinfo")); 
fd.append("CustomField", "This is some extra data"); 
$.ajax({ 
    url: "stash.php", 
    type: "POST", 
    data: fd, 
    processData: false, // tell jQuery not to process the data 
    contentType: false // tell jQuery not to set contentType 
}); 
+0

我沒有通過AJAX發送文件。我只是把在輸入字段,並在本身種植它們。然後它只是一個普通的POST表單提交。 – efru 2012-03-03 00:27:12

+0

那麼你可能想發佈一些代碼,以便人們可以幫助。如果你還沒有使用它http://jsfiddle.net/是一個非常好的地方發佈你的代碼。 – 2012-03-03 01:32:00