使用Jquery POST一个数组

时间:2016-07-29 03:10:11

标签: javascript php jquery

我正在使用UPLOAD方法尝试Post jQuery多个文件,但在尝试查看数组结果时出现undefined index错误。试图搜索答案但仍然无法做到。这样做的正确方法是什么。以下是我的代码示例

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>";  

3 个答案:

答案 0 :(得分:0)

一些事情

  • $("input[name='others']")与您的HTML中的others[]不匹配。为什么不使用id并匹配它?
  • 您可能需要确保表单中包含 enctype="multipart/form-data"
  • 你的$("input[name='id']").val();输出是什么?你的代码中没有提供任何线索。

请参阅php文件上传文档 - Uploading multiple files

请参阅此stackoverflow问题 - Multiple file upload in php

答案 1 :(得分:0)

我建议将所需的数组格式化为JSON字符串,然后使用php_decode将其转换为数组。

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

echo $ar[0]; // apple

有关JSON with PHP的更多信息,请访问: http://www.dyn-web.com/tutorials/php-js/json/decode.php

答案 2 :(得分: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');
})

这会将整个表单发送到服务器,您可以根据需要处理文件和其他字段。

您可以在jQuery ajax documentation

中阅读有关processData和contentType配置的更多信息

请告诉我们这项工作是否适用于您,

问候