Intereting Posts
Рандомизация – и запоминание того, что вопросы рандомизации – множественного выбора в php Заказать многомерный массив рекурсивно на каждом уровне PHP Черный список IP-адресов Сохранение метаданных по элементу и получение при завершении проверки журнал ошибок php, как удалить дубликаты / найти уникальные ошибки Ошибка при попытке использовать гибридный поток входа в Google OAuth 2.0 (Google_IO_Exception) с сообщением «Ошибка HTTP: невозможно подключиться:« 0 ») Разбор огромных файлов XML в PHP Загрузка изображения Laravel AJAX PHP mySQLi_fetch_all: итерация по каждой строке Установите цену товара в корзину WooCommerce до нуля, если продукт уже куплен Zend_Form: как проверить 2 поля одинаковы как отправить изображение в ImageView на php-сервер? Невозможно использовать mysql_real_escape_string Использование .htaccess, никогда не показывать index.php Как преобразовать GPS-координаты в полный адрес с помощью php?

Передача данных формы и файла на php с использованием ajax

Возможно, это было задано раньше, но у меня есть поиск здесь и в google, и каждый ответ, который я прочитал, не работает.

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

HTML

<form id="myForm" method ="post" enctype="multipart/form-data"> First Name: <input type="text" name="fname" id="fname"> <br> Last Name: <input type="text" name="lname" id="lname"> <br> Email: <input type="text" name="email" id="email"> <br> Image: <input type="file" name="image" id="image"> <br> <button type="button" name="btnSubmit" id="btnSubmit"> Submit </button> </form> 

AJAX / JS

 $("#btnSubmit").click(function(){ var formData = new FormData($(this)[0]); $.ajax({ type: 'POST', url: 'form2.php', data: formData, success: function (data) { alert(data) }, }); }); 

PHP

 $upload = basename($_FILES['image']['name']); $type = substr($upload, strrpos($upload, '.') + 1); $size = $_FILES['image']['size']/1024; if ($_FILES["image"]["error"] > 0) { echo "Error: " . $_FILES["image"]["error"] . "<br>"; } else { echo "Upload: " . $upload . "<br>"; echo "Type: " . $type . "<br>"; echo "Size: " . $size . " kB<br>"; } $fname = $_POST['fname']; $lname = $_POST['lname']; $email = $_POST['email']; echo "You Entered <br />"; echo "<b>First Name:</b> ". $fname . "<br />"; echo "<b>Last Name:</b> ". $lname . "<br />"; echo "<b>Email:</b> ". $email . "<br />"; 

Формы по умолчанию отправляются туда, где им говорят. Чтобы остановить это, вам нужно предотвратить это. Ваш js должен выглядеть примерно так:

 $("form#data").submit(function(event){ event.preventDefault(); ... }); 

измените submit типа submit тип кнопки button а затем используйте AJAX следующим образом:

 <button type="button" name="btnSubmit" id="btnSubmit"> Submit </button> 

вам необходимо изменить код jQuery для:

 $("#btnSubmit").click(function(){ var formData = new FormData($("#myForm")); $.ajax({ type: 'POST', url: 'form2.php', data: formData, success: function (data) { alert(data) }, }); }); 

а также измените код здесь, if ($_FILES["file"]["error"] > 0) до if ($_FILES["image"]["error"] > 0)

Эта строка

 if ($_FILES["file"]["error"] > 0) 

Должно быть

  if ($_FILES["image"]["error"] > 0)