2013-09-27 4 views
1

Я искал и искал ответ на вопрос о том, как добавить поле ввода и передать дополнительную переменную в файл uploadifive.php. Тем не менее, я не могу получить какие-либо из опубликованных решений для работы, и в большинстве случаев те решения, которые я нашел, никогда не упоминались как работающие или не разрешенные.Добавление поля ввода в Uploadifive/Uploadify

Может кто-нибудь рассказать мне, как я могу получить содержимое поля ввода, переданного в файл uploadifive.php?

Вот мой HTML

<input type="text" name="student" id="student" placeholder="Your Student ID" value="" /> 
<input id="file_upload" name="file_upload" type="file" multiple="true"> 
<a style="position: relative; top: 8px;" href="javascript:$('#file_upload').uploadifive('upload')">Upload Files</a> 

Вот Код JavaScript

<?php $timestamp = time();?> 
    $(function() { 
     $('#file_upload').uploadifive({ 
      'auto'  : false, 
      'method' : 'post', 
      'formData' : { 
       'timestamp' : '<?php echo $timestamp;?>', 
       'token'  : '<?php echo md5('unique_salt' . $timestamp);?>', 
       'student' : $('#student').val() 
         }, 
       'queueID'   : 'queue', 
       'uploadScript'  : 'uploadifive.php', 
       'onUploadComplete' : function(file, data) { console.log(data); } 
      }); 
     }); 

Вот как я пытаюсь использовать его в файле PHP, но есть не значение передается

$_POST['student'] 

Если бы кто-нибудь мог сказать мне, что я делаю неправильно, то как это сделать, я бы очень признателен.

Спасибо, Гэри

+0

Пожалуйста, проверьте мой ответ. Если это полезно, установите ответ как принятый или проголосуйте за него. В противном случае просто напишите, что отсутствует в ответе, или с какими проблемами вы сейчас сталкиваетесь, и я постараюсь помочь. –

ответ

0
$('#file_upload') is undefined at the moment when you call the function 

вы должны рассмотреть возможность использования document.ready так, чтобы все элементы DOM загружаются и можно ссылаться с помощью JQuery

javascript:$('#file_upload').uploadifive('upload') of code is also unnecessary 

пожалуйста, прочитайте документацию и посмотреть демо в их [demo] [1] они определили uploadifive

[1]: http://www.uploadify.com/demos/ наконец-то из дома, поэтому у них есть не используется document.ready

+0

$ (document) .ready() уже включен в код как $(). Эти фрагменты кода равны ([документация] (http://api.jquery.com/ready/)) –

1

Ваш код не работает должным образом, так как значение #student поле ввода передается Uploadify FormData при загрузке страницы. В этот момент значение поля пустое, поэтому вы получаете пустое значение в своем скрипте PHP.

Что вам нужно сделать, это прочитать значение поля точно при загрузке. Для этого вам необходимо реализовать метод добавления объекта onUploadStart.

Для получения более подробной информации, пожалуйста, проверьте the documentation. Вы также найдете там пример настройки formData динамически.

+0

Вы верны, но упомянутое событие и связанная с ним документация были для Uploadify. К сожалению, API для Uploadifive немного изменился с Uploadify. У меня еще не было возможности проверить это, но ответ @sepelin выглядит правильным. – Jeff

0
<?php $timestamp = time();?> 
    function uploadFiles() { 
     $('#file_upload').data('uploadifive').settings.formData = { 
      'title'  : $('#student').val(), 
      'timestamp' : '<?php echo $timestamp;?>', 
      'token'  : '<?php echo md5('unique_salt' . $timestamp);?>' 
     }; 
     $('#file_upload').uploadifive('upload'); 
    } 
0

Забудьте о попытке добавить что-либо к инициализации, например onUpload. Не работает. Если вы перейдете на форум Uploadifive, вы найдете несколько непоследовательных ответов от автора, которые, похоже, содержат синтаксические ошибки и не работают.

Удалить формуВ целом из инициализации и переместить ее в отдельную функцию, вызываемую с помощью ссылки для загрузки. Вы найдете подробное объяснение по this post

1

на вход нам нужно прочитать остатки

<input type="text" name="student" id="student" placeholder="Your Student ID" value="" /> 

Используйте этот Js как руководство (я включал только варианты, важные для примера):

$('#my_file').uploadifive ({ 
    'formData': { 
     //Some data we already know 
     'timestamp' : "1400137111", 
     'token'  : "a9b7ba70783b617e9998dc4dd82eb3c5" 
    }, 

    //This will be executed before the upload process starts, so here's where 
    //you will get the values in your form and will add them to formData. 
    'onUpload': function(filesToUpload) { 
     //Most of jQuery plugins, and luckily this one, uses the function jQuery.data 
     //to save the settings we use on plugin's initialization. 
     //In this case we can find those settings like this: 
     var settings = $(this).data('uploadifive').settings; 

     //Now we need to edit formData and add our input's value 
     settings.formData.student = $('#student').val(); 

     //formData has the value readed from the input, so we store 
     //it again using jQuery.data 
     $(this).data('uploadifive').settings = settings; 

     //After this the plugin will perform the upload, reading the settings with 
     //jQuery.data and our input's value will be present 
    }, 

}); 
Смежные вопросы