• Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Дмитрий, я запустила на локальном сервере ваш код. Все работает.

    Вот только у меня задача другая.

    Не успешное выполнение php - превышение размера файла.
    И вот на этой проверке ваш код не работает.
    Выдает ошибку в строке var response = jQuery.parseJSON(data);

    Мне бы еще понимать что это значит...

    Скажите, а можно вытащить переменную $filesize из send.php и сделать проверку в файле js?
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Дмитрий, письма на реальном сервере отправляет. С этим все нормально.
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Дмитрий, да в таком виде форма работает.
    Вот только она слишком примитивная.
    Я в добавляю required и первое условие не имеет смысла.

    Вставляю отправку файла и проверку размера.
    Просто send.php делает все правильно:
    - если размер меньше 10MB, пишет размер и "Успешно"
    - если размер больше 10MB, пишет размер и "Не успешно"

    Подключаю ваш код и все перестает работать и в консоли выдает ошибку в строке var response = jQuery.parseJSON(data);

    <?php
    if(isset($_POST)){
    
    	
      $to = "inna97litvina@gmail.com";
      $from = "test@litvinatest.ru";
      $subject = "Заявка с сайта АЙРИС TAXI";
      $message = "\nДанные кандидата в водители: \n\n"
            .$family." ".$name. "\n\nтелефон: ".$phone."\n\n".$date."\n\n".$_SERVER['HTTP_REFERER'];
     
      $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";
    
    	if(is_uploaded_file($_FILES['file']['tmp_name'])) {
             $attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
             $filename = $_FILES['file']['name'];
             $filetype = $_FILES['file']['type'];
             $filesize = $_FILES['file']['size']; 
              $message.="
     
    --$boundary
    Content-Type: \"$filetype\"; name=\"$filename\"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename=\"$filename\"
     
    $attachment";
         }
    
           $message.="
    		--$boundary--";
    
         echo "$filesize";
      	echo "<br>";
    
      $answer = [];
      // 
      if($filesize < 10000000) {
      	
      	echo "Успешно";
        $answer = ['type' => 'success', 'message' => 'Message send!'];
      }
      else{
      	echo "Не успешно";
        $answer = ['type' => 'error', 'message' => 'Message no send!'];
      }
      echo json_encode($answer);
    }
    ?>
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Вот в таком виде у меня все работает при успешном ответе.

    $("#sc06row2__form").submit(function () { 
            var th = $(this);
           
            $.ajax({
                type: "POST",
                url: "send.php", //Change
                data: th.serialize(),
            })
            .done(function () {            
                $('.sc06row5__modyes').fadeIn();
                $('.overlay').fadeIn();
                $('body').addClass('body_overlay');
                $(this).find('input').val('');
                $('#sc06row2__form').trigger('reset');
             })    
            return false;
        });


    if ($filesize < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
                    mail($to, $subject, $message, $headers);
                    
                    echo 'успешно'; 
    
                    // $answer = ['type' => 'success', 'message' => 'Ваше сообщение отправлено, спасибо!'];
                    // return json_encode($answer);   
                }
                  else {
                    echo 'не успешно'; 
    
                  //   $answer = ['type' => 'error', 'message' => 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.'];
                  // return json_encode($answer);  
                  }

    Переменная $filesize, определена:
    $boundary = md5(date('r', time()));
      $filesize = '';
      $headers = "MIME-Version: 1.0\r\n";
    
     $filesize = $_FILES['file_prava1']['size'];


    И на почту на реальном сервере все отправляется.

    Вот только нет реакции в ajax на не успешный ответ.
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Поставила, кеш почистила.

    VM762:1 Uncaught SyntaxError: Unexpected token у in JSON at position 0
    at Function.parse [as parseJSON] ()
    at Object.success (js.js:127)
    at u (VM740 jquery.min.js:2)
    at Object.fireWith [as resolveWith] (VM740 jquery.min.js:2)
    at k (VM740 jquery.min.js:2)
    at XMLHttpRequest. (VM740 jquery.min.js:2)
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    VM568:1 Uncaught SyntaxError: Unexpected token у in JSON at position 0
    at Function.parse [as parseJSON] ()
    at Object.success (js.js:127)
    at u (VM544 jquery.min.js:2)
    at Object.fireWith [as resolveWith] (VM544 jquery.min.js:2)
    at k (VM544 jquery.min.js:2)
    at XMLHttpRequest. (VM544 jquery.min.js:2)

    js.js:127 - var response = jQuery.parseJSON(data);

    В консоли выдает вот такое сообщение
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Дмитрий, поставила ваш код и форма совсем не реагирует на отправку.

    $answer = [];
    
        if ($filesize < 10000000) { 
            mail($to, $subject, $message, $headers);                
                    $answer = ['type' => 'success', 'message' => 'Ваше сообщение отправлено, спасибо!'];
                   return json_encode($answer);
                }
                  else {
                   // echo 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.';   
                  $answer = ['type' => 'error', 'message' => 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.'];
                  return json_encode($answer);
                }


    Я там подправила синтаксис.

    $("#sc06row2__form").submit(function () { 
            var th = $(this);                
            $.ajax({
                type: "POST",
                url: "send.php", //Change
                data: th.serialize(),       
    
            success: function (data) {    
                var response = jQuery.parseJSON(data);
               if(response.type == 'success'){
                   alert(response.message);
               } 
                 if(response.type == 'error'){
                   alert(response.message);
               }       
           }
           });
            return false;
        });
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Павел, с переменной $filesizeall просто опечатка. Все исправлено. И подсчет размера файла на php идет нормально. Он не передает эту инфу ajax.
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Дмитрий, благодарю за ответ.
    Вот только ничего не работает.