Как прикрутить ajax к форме

212
13 апреля 2017, 18:52

Есть страница с формой, и загрузкой файла. По идее сам файл должен загружаться на сервер, а его имя и данные из формы в mysql, и все, соответственно, с помощью ajax. Помогите разобраться, как добавить имя файла в БД и данные из формы в БД без перезагрузки страницы?

  1. Скрипт для загрузки файлов

<script> 
			var files; 
			$('input[type=file]').change(function(){ 
			files = this.files; 
			}); 
			 
			$('.submit.button').click(function( event ){ 
    event.stopPropagation();  
    event.preventDefault();   
  
    var data = new FormData(); 
    $.each( files, function( key, value ){ 
        data.append( key, value ); 
    }); 
  
  
    $.ajax({ 
        url: './submit.php?uploadfiles', 
        type: 'POST', 
        data: data, 
        cache: false, 
        dataType: 'json', 
        processData: false,  
        contentType: false,  
        success: function( respond, textStatus, jqXHR ){ 
 
            if( typeof respond.error === 'undefined' ){ 
 
                var files_path = respond.files; 
                var html = ''; 
                $.each( files_path, function( key, val ){ html += val +'<br>'; } ) 
                $('.ajax-respond').html( html ); 
            } 
            else{ 
                console.log('ОШИБКИ ОТВЕТА сервера: ' + respond.error ); 
            } 
        }, 
        error: function( jqXHR, textStatus, errorThrown ){ 
            console.log('ОШИБКИ AJAX запроса: ' + textStatus ); 
        } 
    }); 
  
}); 
		</script>
2. Сама форма: 
 
<form id="myForm" action="userinfo.php" method="post"> 
<p>Фамилия: <input type="text" name="surname" placeholder="Фамилия" /><br /></p> 
<p>Имя : <input type="text" name="name" placeholder="Имя" /><br /></p> 
<p>Отчество : <input type="text" name="secondname" placeholder="Отчество" /><br /></p> 
<input type="file" accept=".txt,image/*"> 
<a href="#" class="submit button" id="imgs">Загрузить файлы</a> 
<div class="ajax-respond"></div> 
<button class="button" id="sub">Save</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

  1. submit.php

    <?php
       $data = array();
       if( isset( $_GET['uploadfiles'] ) ){
        $error = false;
        $files = array();
        $uploaddir = './uploads/'; 
       if( ! is_dir( $uploaddir ) ) mkdir( $uploaddir, 0777 );
       foreach( $_FILES as $file ){
          if( move_uploaded_file( $file['tmp_name'], $uploaddir . 
          basename($file['name']) ) ){
            $files[] = realpath( $uploaddir . $file['name'] );
          }
          else{
            $error = true;
          }
        }
        $data = $error ? array('error' => 'Ошибка загрузки файлов.') : 
       array('files' => $files );
       echo json_encode( $data );
      }
    
  2. userinfo.php

     <?php
      include_once('u.php');
      if (mysqli_connect_errno()) {
      printf("Не удалось подключиться", mysqli_connect_error());
        exit();
      }
      $surname = $_POST['surname'];
      $name = $_POST['name'];
      $secondname = $_POST['secondname'];
      $imgs = $_POST['imgs'];
    if($link->query("INSERT INTO test4 VALUES('$surname', '$name', '$secondname', '$imgs')")) {
     printf("Successfully Inserted");
    }
    else
      echo "Error: ", mysqli_error($link);
    ?>
    
READ ALSO
Отправка запроса на сервер

Отправка запроса на сервер

На сервер отправляю запрос с JWT-ключем в заголовке, в ответ сервер отправляет новую страницуВопрос, как изменить текущую страницу на новую...

209
Google Custom Search API

Google Custom Search API

Пытаюсь сделать Google Custom SearchПервый проходит нормально, но вот при попытке сделать пагинацию и переходить по другим страницам, не выдает результаты...

195
Удаление файлов gulp

Удаление файлов gulp

Использую плагин gulp-watch Столкнулся с тем, что при удалении файла из рабочей директории приходиться так же удалять его и из папки сборкиРешил...

305
Как создать и удалить элемент с помощью jQuery?

Как создать и удалить элемент с помощью jQuery?

Добрый день! Есть скрипт выдвижной панелиВ файле стиля есть элемент (подложка), который в html код не добавлен

282