Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2017, 12:47
Аспирант
Отправить личное сообщение для sergey24 Посмотреть профиль Найти все сообщения от sergey24
 
Регистрация: 04.11.2016
Сообщений: 56

Где проблема в скрипте?
<form id="formss1" method="POST" action="javascript:void(0);" onSubmit="ajaxsend_formss('1');" enctype="multipart/form-data">
            <input type="text" name="name" placeholder="" required/>
            <input type="text" name="asd" placeholder="" required/>
            <input type="text" name="rty" placeholder="" required/>
            <input type="text" name="hfg" placeholder="" required/>
            <input type="text" name="nvb" placeholder="" required/>
            <input type="file" name="fileFF[]" multiple id="fileFF" class="w100">
            <button type="submit">Оставить заявку на сайте</button>
        </form>


$(function(){
  $("#formss1").submit(function(evt){
      var $fileUpload = $("#fileFF");
      var http = new XMLHttpRequest();
      var f = $(this);
      if (parseInt($fileUpload.get(0).files.length) > 4) {
          alert("You can only upload a maximum of 4 files");
      } else {
          evt.preventDefault();
          http.open("POST", "mail2.php", true);
          location.href = "#callme1";
          http.onerror = function() {
              alert('Извините, данные не были переданы');
          }
          http.send(new FormData(f));
      }
  });    
});


<?php
  $to = "mail@mail.ru";
  $subject = "Заявка онлайн";
  $from ="От ".$_SERVER['HTTP_HOST'];
  $message = .$_POST['name'] .$_POST['dsa'] .$_POST['dsad'] .$_POST['dasd'] .$_POST['dasd'];
  $boundary = md5(date('r', time()));
  $filesize = '';
  $headers = "MIME-Version: 1.0\r\n";
  $headers .= "From: " . $from . "\r\n";
  $headers .= "Reply-To: " . $from . "\r\n";
  $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
  $message="
Content-Type: multipart/mixed; boundary=\"$boundary\"

--$boundary
Content-Type: text/plain; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit

$message";
  for($i=0;$i<count($_FILES['fileFF']['name']);$i++) {
     if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {
         $attachment = chunk_split(base64_encode(file_get_contents($_FILES['fileFF']['tmp_name'][$i])));
         $filename = $_FILES['fileFF']['name'][$i];
         $filetype = $_FILES['fileFF']['type'][$i];
         $filesize += $_FILES['fileFF']['size'][$i];
         $message.="

--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"

$attachment";
     }
   }
   $message.="
--$boundary--";

    mail($to, $subject, $message, $headers);
?>


Скрипт проверяет поле input с id FileFF (type="file") на кол-во выбранных файлов. Если менее 4 файлов, то скрипт работает дальше, если больше, то скрипт выдаёт ошибку. В данном скрипте проверка файлов отлично работает. Редирект после отправки тоже. Письма отправляются, но все поля не выводятся в письме, картинки тоже. Как быть?
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2017, 12:57
Аспирант
Отправить личное сообщение для sergey24 Посмотреть профиль Найти все сообщения от sergey24
 
Регистрация: 04.11.2016
Сообщений: 56

С данным скриптом отсылаются и фото, и данные с заполненных полей, но нет проверки на кол-во файлов.
<script>
	document.getElementById('formss1').addEventListener('submit', function(evt){
	  var http = new XMLHttpRequest(), f = this;
	  evt.preventDefault();
	  http.open("POST", "mail2.php", true);
		location.href = "#callme1";
	  http.onerror = function() {
		alert('Извините, данные не были переданы');
	  }
	  http.send(new FormData(f));
	}, false);
	</script>


Скрипт проверки:
$(function(){
    $("input[type='submit']").click(function(){
        var $fileUpload = $("input[type='file']");
        if (parseInt($fileUpload.get(0).files.length)>2){
         alert("You can only upload a maximum of 2 files");
        }
    });    
});
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2017, 12:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от sergey24
Как быть?
Во-первых проверять пришедшее формой, во-вторых оформлять почтовое сообщение согласно желаемому.
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2017, 13:00
Аспирант
Отправить личное сообщение для sergey24 Посмотреть профиль Найти все сообщения от sergey24
 
Регистрация: 04.11.2016
Сообщений: 56

Сообщение от laimas Посмотреть сообщение
Во-первых проверять пришедшее формой, во-вторых оформлять почтовое сообщение согласно желаемому.
$message = .$_POST['name'] .$_POST['dsa'] .$_POST['dsad'] .$_POST['dasd'];

Input поля с name атрибутами name, dsa, dsad,dasd имеются, но почему то не передаются.

Последний раз редактировалось sergey24, 07.04.2017 в 13:04.
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2017, 13:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от sergey24
$message = .$_POST['name'] .$_POST['dsa'] .$_POST['dsad'] .$_POST['dasd'];
Ну да, то есть это и есть проверка пришло ли вообще что-то формой или же $_POST?
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2017, 13:26
Аспирант
Отправить личное сообщение для sergey24 Посмотреть профиль Найти все сообщения от sergey24
 
Регистрация: 04.11.2016
Сообщений: 56

Сообщение от laimas Посмотреть сообщение
Ну да, то есть это и есть проверка пришло ли вообще что-то формой или же $_POST?
Это оформление письма, сейчас буду проверку гуглить, спасибо за наводку
Ответить с цитированием
  #7 (permalink)  
Старый 07.04.2017, 13:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от laimas
Это оформление письма
Это не оформление письма. Искать в сети как правильно оформляются почтовые отправления, какие они могу быть и как встроить в тело почтового отправления изображения.
Ответить с цитированием
  #8 (permalink)  
Старый 07.04.2017, 13:45
Аспирант
Отправить личное сообщение для sergey24 Посмотреть профиль Найти все сообщения от sergey24
 
Регистрация: 04.11.2016
Сообщений: 56

Сообщение от laimas Посмотреть сообщение
Это не оформление письма. Искать в сети как правильно оформляются почтовые отправления, какие они могу быть и как встроить в тело почтового отправления изображения.
Но ведь работает до изменение JS скрипта. При "склейке" 2 скриптов и происходит сбой в отправке данных. До этого отлично отправлялись как данные полей, так и фото.
Ответить с цитированием
  #9 (permalink)  
Старый 07.04.2017, 13:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от sergey24
Но ведь работает до изменение JS скрипта.
Лень распечатать на экран содержимого массивов чтобы убедится не пусты ли они?

Что касается изображений, то непосредственно в письме они будут видны если встроены в него посредством Content-ID.

Ищите в сети.
Ответить с цитированием
  #10 (permalink)  
Старый 07.04.2017, 13:54
Аспирант
Отправить личное сообщение для sergey24 Посмотреть профиль Найти все сообщения от sergey24
 
Регистрация: 04.11.2016
Сообщений: 56

Проблему решил. Надо было заменить:
var http = new XMLHttpRequest();
var f = $(this);

На:
var http = new XMLHttpRequest(), f = this;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с фильтрацией динамических данных morg4n AJAX и COMET 7 29.06.2015 10:33
Проблема с форматированием числа в калькуляторе Yu.Ka. jQuery 9 24.12.2014 19:56
Ребят где ошибка в скрипте? xddanik Events/DOM/Window 7 12.12.2014 15:50
Ошибка в jQuery 1.5.1. Не понимаю в чем проблема? viatcheslav AJAX и COMET 0 16.05.2011 11:38
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56