Добрый день! Пытаюсь написать обработчик формы через которую пользователь оставляет отзыв и может прикрепить фотографию. Все отлично работает кроме загрузки фотографии, она попросту не загружается, а почему я не понимаю, все делаю правильно вроде бы, а она не грузиться хоть ты убей, при этом консоль нечего не говорит, успешно возвращается success, и network в консоли говорит что все "ок, информация передана". Может быть причина в php, может в клиенте, я уже не знаю, прошу взглянуть на мои скрипты, может вы поймете где у меня ошибка: Разметка формы: HTML: <form id="contact-form" enctype="multipart/form-data" method="post" action="comments/add_comments"> <input type="name" placeholder="Ваше имя" name="comments_name"> <input type="text" placeholder="Город/поселок" name="comments_city"> <input type="email" placeholder="Ваш e-mail адрес" name="comments_email"> <input type="tel" placeholder="Ваш номер телефона" name="comments_phone"> <textarea placeholder="Пожалуйста напишите Ваш отзыв, здесь" name="comments_message" rows="3"></textarea><br> <br> <label class="control-label">Вы можете поделиться фотографиями с отдыха:</label><br> <br> <input type="file" name="img"> <br> <button type="submit" class="button--8">ОСТАВИТЬ ОТЗЫВ</button> </form> JS обработчик формы: Код (Javascript): $("form#contact-form").submit(function(e){ e.preventDefault(); var f = this, data = $(f.elements).slice(0, -1), s = $(f.elements).last(), e = s.end().slice(0, -2).removeClass('input-error').filter(function() { return !$.trim(this.value) }); if(e.length) e.addClass('input-error'); else { s.prop('disabled', 1); s.end().not(s); $.ajax({ url: f.action, type: 'POST', data: data, dataType: 'json', success: function(data) { thx('open'); create_comments(data); f.reset(); s.prop('disabled', 0); e.removeClass('input-error'); $('body').animate( { scrollTop:$('.row.comment:first').offset().top - $('.navbar').outerHeight() }, 500 ); } }); } }); Обработчик на сервере: PHP: //КОНТРОЛЛЕР function add_comments() { $config['upload_path'] = './photo/'; $config['allowed_types'] = 'gif|jpg|png|jpeg'; $config['max_size'] = '3000'; $config['encrypt_name'] = TRUE; $config['remove_spaces'] = TRUE; $this->load->library('upload', $config); $this->upload->do_upload(); $image_data = $this->upload->data(); $comments['name'] = $_POST['comments_name']; $comments['city'] = $_POST['comments_city']; $comments['email'] = $_POST['comments_email']; $comments['phone'] = $_POST['comments_phone']; $comments['comment'] = $_POST['comments_message']; $comments['img'] = $image_data['file_name']; $comment_id = $this->main_model->new_comments($comments); $comment = array(); if ($comment_id) { $comment = $this->main_model->get_comments_limit(0,1); } echo json_encode($comment); } // МОДЕЛЬ function new_comments($comments){ $array = array( 'date' => date("Y-m-d H:i:s", time()), 'name' => $comments['name'], 'city' => $comments['city'], 'email' => $comments['email'], 'phone' => $comments['phone'], 'comment' => $comments['comment'], 'img' => $comments['img'] ); $this->db->insert('comments', $array); return $this->db->insert_id(); } Заранее благодарен за любую помощь! P.S. Серверная часть написана на php-фреймворке Codignaiter
там ещё можно посмотреть какие данные были отправлены. смотри "инструменты разработчика" в google chrome отладка/debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550
Только сегодня сам бился об ajax в jquery. Если у вас стоит dataType:"json" то даже при возвращении корректного json c правильными заголовками в jquery не будет срабатывать событие success. Вообщем уберите dataType:"json" и всё должно заработать.
Спасибо за участие, разобрался уже, причина была в том что этой формой я передаю в $.ajax не только текст но и файл, а информацию с файлом нужно обрабатывать в $.ajax по другому, с помощью вот такого метода: form = new FormData(this),