JQuery AJAX Form, не можете отправить массив? - PullRequest
0 голосов
/ 29 июня 2010

Я практикую свои навыки jQuery (хорошо, учусь тоже) и столкнулся с проблемой.Я получил форму загрузки файла с вводом файла.Я использую этот плагин (http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Uploading) для загрузки нескольких файлов одновременно. Поэтому я использую следующую форму ввода:

<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 я вижу, что на фотографии только один файл [].

Есть предложения, почему?есть что-то, что я пропустил?

С уважением, Том

Ответы [ 2 ]

1 голос
/ 29 июня 2010

На самом деле вы запрашиваете значение только у первого photo[] члена. photo[].val() не вернет массив, содержащий все значения.

Вы должны были бы пройти через каждого члена photo[], например, используя each(), для построения массива значений.

Однако я не уверен, что это правильный путь для всего, что вы хотите сделать. Вы знаете, что вы загружаете только имена файлов , а не их данные?

Невозможно загрузить файлы с помощью AJAX без помощи дополнительных инструментов, таких как Flash-based SWFUPload . Это сделано в целях безопасности, чтобы предотвратить прямой доступ скриптов к локальным файлам.

Возможно, то, что вы пытаетесь сделать, лучше всего подходит для подхода, когда свойство target формы указывает на <iframe>. Это не приведет к перезагрузке страницы, но все равно отправит форму «традиционным» способом, позволяющим загружать файлы старой школы.

0 голосов
/ 29 июня 2010

Хорошо, по предоставленной вами ссылке есть часть под названием Ajax, в которой указывается, что самый простой способ - использовать плагин jQuery Form.

Документация по плагинам обычно очень помогает ^^.

Хорошего дня:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...