Я умею проставлять запятые, просто не вижу в них смысла. Знаю что такое обороты, вводные слова, и тому подобное, но я про это забываю когда пишу, потому что я думаю и тут же пишу, на автомате растовление знаков препинания у меня не стоит, ибо эта задача не в приоритете --- Добавлено --- разве он сам не говорит собрать по форме массив... Если нет то как (=_?_=), я где то на форуме не здесь вообще в нете вычитал помоему даже на буржуйском, что он сам соберёт массив из данных этим выражением input type=file.
Вот сделал для multiple и input name=file[] массив http://code.runnable.com/V6g3OfA2BvNyeisg/ --- Добавлено --- отлично, самый лучший вариант, подправлю свои примеры на его основе --- Добавлено --- Код (Javascript): //<form id='form'> var formData = new FormData($('#form').get(0)); // если нужно добавить ещё formData.append('custom', 'hello custom');
когда идет перечисление перед и не ставится запятая. Например: картошка, редиска, морковка и капуста. --- Добавлено --- @askanim, лучше вообще не расставляй если сомневаешься. --- Добавлено --- Ошибаются все, но ты говоришь, я знаю, и такую хрень пишешь, это хуже чем не знать имхо. --- Добавлено --- извините за оффтоп.
@igordata так себе. --- Добавлено --- @igordata ну мне кажется я логику понимаю, но такое ощущение, что не до конца... --- Добавлено --- Так ну из того что было по ссылке не хрена не работает, кроме .get(0); Код (Javascript): $('#ModalExe').on("click",function() { var $that = $(this); var formData = new FormData($('#image').get(0)); jQuery.ajax(root+'admin/modules/ajax/add-files', { processData: false, contentType: false, type: "POST", data: formData, success: function(result) { alert(result); }, error: function (result) { alert(result); } }); }); Я очень тяжко понимаю js он для меня не логичный не разу вообще. Я его вообще туго понимаю вот php куда проще осваиваю... А js тяжеловато. --- Добавлено --- если влепить по кнопке submiit и форму то вообще релодается страничка по не объяснимым причинам. --- Добавлено --- @igordata я js понимаю по типу вот это работает ага запомнил, а почему не всегда ясно.
@igordata А ты можешь объяснить как он должен работать я был бы благодарен тебе от всей души, нормальное объяснение, потому что я не где так и не нашёл инфу на то, как он типа работает, тока на то как он должен работать, и какие то кривые примеры то где jquery прямо ошибку синтаксиса пишет, то пустой массив с файлами.
Срабатывает поведение по умолчанию, submit, его нужно отменить, смотри мой код, там есть event.preventDefault(); это он и делает. У тебя мои примеры не работают?
@denis01 мой пример работает который я скинул и всё добавляет на сервер, помог кусочек твоего кода. Вот это за это спасибо, мне помогла вот эта часть, о ней был не вкурсах, точней не понимал её. --- Добавлено --- остальное напрочь либо пустой массив files либо ошибка синтаксиса в jquery либо ещё какая нибудь не понятная хрень.
@mahmuzar Почему она не тут jquery Что за нафиг... Я и не заходил туда потому что смотрю mozilla написано, меня вообще от этого слова воротит... Это же, mozilla... jquery О_о
@Ganzal у меня весь день огонь, вот смотри, я сделал задачу свою, так ща , посчитаю, в 10 пришёл, и сейчас 19 42... 10 часов почти, охереть, да меня уволить за такое надо, но норм я учусь и зп у меня низенькая, так что мне можно. В первый раз решал такую задачу, а именно загрузку через аякс, как на php массовую загрузку сделать я знаю, а вот как реалезовать это через аякс я не знал, но теперь на всю жизнь запомнил, фишка в том, что в следующий раз чтобы сделать тоже самое мне потребуется максимум час.
За это спасибо @MAN_IFE_ST, хотя вижу ты лайк ему поставил, молодец Это плохо, что ты не понял, что куда, потому что FormData можно вручную append или сразу всё через get, но и другие способы есть. FormData это из JavaScript, а mozilla потому что они свой движок javascript делают, он в разных браузерах разный, вот и документацию к своему движку дали, хорошо что почти во всех новых браузерах FormData работает одинаково.
Та не, я не про это. Ты зашел на МДН, увидел слово мозилла и как мудак ушел. Потому что не джейквери. А почему? Мозилла, да будет тебе известно, вносит огромный вклад в развитие емакси (джаваскрипт) и иногда даже придумывает какие-то фишки, доступные в их движке, но пока еще не принятые консорциумом. Обходить стороной документашку мозиллы по джаваскрипту потому что мозилла - быть мудаком. Это мы уже выяснили. Дальше. Не джейквери. Ну так джейквери это всего лишь библиотека, написанная на джаваскрипте. Чтоб ею пользоваться - надо знать джаваскрипт. Обходить стороной документашку мозиллы по джаваскрипту потому что не джейквери - быть мудаком. Как-то так.
Всё дело в том, что ты не понимал как весь код взаимодействует, 1-2 часа в отладке и ты бы не за 10 часов управился, а меньше. Подумай над этим.
хых не, это я понял, ща я ещё фишку покажу какую я провернул ГЫ..... Я не знал этого @Ganzal я не знал об этом
Ну вот тебе еще один пример как ты принимаешь решение без участия своего мозга. Ты действительно головой только кушаешь...
@Ganzal Да, как бы если ты помнишь раньше был браузер mozilla и я всё детство просидел за этим браузером, и если честно он меня мягко говоря тогда з...ал. Вот и ассоциация такая возникла.
Короче выкладываю весь код по загрузке файлов мб кому пригодится вместе с обработкой Первое html документ HTML: <div class="modal-header "> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel"> {% if str.try == 1 %} Запись добавлена. Можете загружать файлы.{% endif %} {% if str == 0 %} произошла ошибка добовления записи {% endif %} {% if str.try == 2 %} Картинки загружены. Можете продолжить. {% endif %} </h4> </div> {% if str.try == 1 %} <form id="image" enctype="multipart/form-data"> <div class="modal-body"> {% for file in str.base %} {% if file.type_string == 5 %} <p>{{ file.info_string }}</p> <div class="col-md-12"> <div class="section"> <label class="field prepend-icon append-button file"><span class="button btn-primary">Выбрать файл</span> <input id="{{ file.id_string }}" type="file" name="file_up[]" onchange="document.getElementById('{{ file.name_string }}').value = this.value;" class="pussy gui-file"> <input id="{{ file.name_string }}" type="text" name="content[{{ file.name_string }}]" placeholder="Выбрать файл" class="gui-input"> <label class="field-icon"><i class="fa fa-upload"></i></label> </label> </div> </div> {% endif %} {% endfor %} <hr> </div> <div class="modal-footer koks"> <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button> <button type="button" class="btn btn-primary" id="ModalExe" data-id-module="{{ str.module_id }}" data-file="{{ str.module_file }}" data-name="{{ str.module_name }}" data-id="{{ str.id }}">Загрузить</button> </div> </form> <script> $('#ModalExe').on("click",function() { var nameModal = $('#ModalExe').attr('data-name'); var idStr = $('#ModalExe').attr('data-id'); var idModule = $('#ModalExe').attr('data-id-module'); var arr = {}; arr['model_name'] = nameModal; arr['str_id'] = idStr; arr['model_id'] = idModule; var formData = new FormData($('#image').get(0)); UploadFile(arr, formData, 'admin/modules/ajax/add-files', 'resultModal'); }); </script> {% endif %} Второе файл со скриптом Код (Javascript): function UploadFile(object, formData, url, id) { for(var key in object) { formData.append(key, object[key]); } jQuery.ajax(root + url, { processData: false, contentType: false, type: "POST", data: formData, success: function (result) { $('#'+id).html(result); }, error: function (result) { $('#'+id).html(result); } }); } третье файл обработки на php PHP: public function addFiles() { // функции подготовки и загрузки массовых файлов $uploadFiles = Gabriel::upLoadPrepare($_FILES['file_up']); $res = []; $res['upload'] = Gabriel::upLoadFiles($uploadFiles, ROOT.'/Template/Files/'); // добавление в базу данных $this->table($_POST['model_name'])->where(['id' => $_POST['str_id']])->Update($_POST['content']); $res['str']['id'] = $_POST['model_id']; $res['str']['name'] = $_POST['model_name']; //возвращаем массив return $res; } и четвёртое файл с функциями для загрузки данных на сервер PHP: public static function upLoadPrepare($file_post) { $file_ary = array(); $file_count = count($file_post['name']); $file_keys = array_keys($file_post); for ($i=0; $i<$file_count; $i++) { foreach ($file_keys as $key) { $file_ary[$i][$key] = $file_post[$key][$i]; } } return $file_ary; } public static function upLoadFiles($array_files, $root_directory) { foreach($array_files as $key => $value){ $uploaddir = $root_directory; $uploadfile = $uploaddir . basename($array_files[$key]['name']); if (move_uploaded_file($array_files[$key]['tmp_name'], $uploadfile)) { $report = 2; } else { return 1; } } return $report; } --- Добавлено --- @Ganzal ну я не особо стремлюсь стать мастером по js, меня больше интересует разработка на php, а js это побочная штука которая нужна для разработки сайтов, и в данный момент нужна мне, а в будущем скорее всего другой человек этим будет заниматься и я уйду полностью в бек.
@denis01 потому что мне нужно было разделить полученные данные на массивы в php, не понял наверное обработку в php, я там сразу из пост запроса данные в бд отправляю. В общем смотри какого вида я получаю массив в php PHP: $_POST = [ 'content' => [ 'img' => 'egegweg;g.jpg' 'image_second' => 'img2.png' ] 'model_name' => 'Demo', 'model_id' => '40', 'str_id' => '2' ] объясняю для чего это, это авто генерируемая загрузка файлов в моём движке, сначала ты собераешь поля для базы данных которые выводятся потом в html, а потом мне же как то надо их ещё заполнить не через phpmyadmin ведь будет чувак сидеть какой-нибудь заполнять. Так что у меня там всё хитро. И это всё само в коробке у меня соберается собираются поля для бд без какого либо кодинга, создаются страницы в которые потом добовляются модули, у каждого модуля своя база данных в котором хранятся строки с этими данными это я сегодня доделал настройки и добавление строк в базу данных в модуле, завтра сделаю, апдейт этого всего, и буду писать инсталлятор движка. Допишу потестирую, потом запишу видео, в котором и покажу что у меня за система такая. @igordata имеет ключик к бета тесту, но он сказал, что он занят