2010-06-29 50 views
0

我正在練習我的jQuery技能(好吧,也學習)並遇到問題。我得到了一個帶有文件輸入的文件上傳表單。我使用這個插件(http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Uploading)一次上傳多個文件。所以我使用以下格式輸入:jQuery AJAX窗體,無法發送數組?

<input type="file" class="multi" name="photo[]" accept="gif|jpg|jpeg|png" maxlength="5"/> 

現在...我試圖發送一個AJAX請求到PHP文件,將處理上傳和服務器端驗證:

$('#upload_photos_s').click(function(q){ 

    var photo = $('[name=photo[]]').val(); 

    // Process form 
    $.ajax({ 
     type: "POST", 
     url: "upload.php", 
     data: 'photo[]='+photo, 
     success: function(html){ 
      alert($('[name=photo[]]').val()); 
      $("#photo_upload_form").html(html); 
     } 
    });    
    return false; 
}); 

雖然使用Firebug我可以看到照片[]中只有一個文件。

任何建議爲什麼?有什麼我錯過了嗎?

問候, 湯姆

回答

1

既然這樣,你確實查詢僅第一photo[]成員的值。 photo[].val()不會返回包含所有值的數組。

你將不得不跑過photo[]的每個成員,例如,使用each()來構建一組值。

但是,我不確定這是否是您想要做的任何事情的正確途徑。你知道你在做什麼只是上傳文件名而不是他們的數據?

如果沒有其他工具(如基於Flash的工具SWFUPload)的幫助,則無法使用AJAX上載文件。這是出於安全目的,以防止腳本直接訪問本地文件。

也許你想要做的是最適合的方法,其中窗體的target屬性指向。這不會觸發頁面的重新加載,但仍然以「傳統」方式提交表單,從而允許上傳舊文件。

+0

+1用於指出錯誤,使用文件輸入'value'上傳。 – peirix 2010-06-29 09:13:50

-1

那麼在你提供的鏈接中,有一部分叫做Ajax,指定最簡單的方法就是使用jQuery表單插件。

插件的文檔通常幫助很多^^。

祝你有美好的一天:)

+0

-1與問題無關。 – 2010-06-29 09:59:55