2016-07-29 16 views
0

我想用多個文件使用Post jQuery方法,但在嘗試查看數組結果時出現undefined index錯誤。試圖尋找答案,但仍然無法做到這一點。什麼是這樣做的正確方法。下面是我的代碼示例中,使用jquery POST一個數組

HTML

<input type="file" name="others[]" multiple="multiple"> 

jQuery的

$(document).ready(function(){ 
$("#submit").click(function(){ 
    var array = [$("input[name='others']").val()], 
     others = { 
      "upload[]": array, 
     }, 
     id = $("input[name='id']").val(); 
    $.post('updated-file-others.php', 
    { 
     others : others, 
     id : id 
    }, function(data){ 
     $("#result_post").html(data); 
    }); 
}); 
}); 

PHP

if(isset($_POST['id'])){ 
    $id = $_POST['id']; 
    $others = array($_FILES['upload']['name']); 
} 
echo "<pre>"; print_r($others); echo "</pre>"; 

回答

0

一個coupl e的東西

  • $("input[name='others']")不符合others[]在您的HTML。爲什麼不使用id並匹配它?
  • 您可能需要確保在表單中有 enctype="multipart/form-data"
  • 最新輸出$("input[name='id']").val();您的代碼中沒有提供任何線索。

參考php文檔上的文件上傳 - Uploading multiple files

請參閱本計算器的問題 - Multiple file upload in php

+0

id的值是正確的。它會發布id值。如果我使用id例如id ='others'。我是否也需要放置'[]'。 – Amran

0

我建議格式化你想要的數組作爲JSON字符串,然後用php_decode將其轉換爲數組。有關JSON用PHP

$json = '["apple","orange","banana","strawberry"]'; 
$ar = json_decode($json); 

echo $ar[0]; // apple 

更多信息可以在這裏找到: http://www.dyn-web.com/tutorials/php-js/json/decode.php

0

使用.post的$不會以這種方式工作,以實現這一目標通過AJAX的文件上傳,必須配置Ajax調用如下所示:

$.ajax({ 
    type: 'POST', 
    url: your_url, 
    data: new FormData($('#form-id').get(0)), 
    processData: false, //set it to false to send a DOMDocument, or other non-processed data 
    contentType: false //pass false to tell jQuery to not set any content type header 
}).done(function (data) { 
    alert('success'); 
}) 

這會將整個表單發送到服務器,並且您可以根據需要處理文件和其他字段。

你可以閱讀一些關於過程數據和配置的contentType在jQuery ajax documentation

請讓我們知道,如果這對你的工作,

問候

+1

它是否「發佈」或「獲取」文件數據? – Amran

+0

我修改了代碼,使其更清晰,您必須指定類型,對我來說這項工作與POST –

+0

感謝您的幫助。錯誤消失了,但當我'print_r($ others)'時。數組值是空的。 – Amran