Почему php не принимает AJAX запрос?

Не могу отправить форму с сайта по средствам AJAX запроса..
После нажатия на кнопку отправить сформированный запрос появляется в браузерной строке
h ttps://site.ru/?name=vvvv&socialname=%40vvvv&numberfo=3000&email=vvvv%40dwa&text=vvvv+ssssss&myfile%5B%5D=

html

    <form enctype="multipart/form-data" id="main-form">
        <div class="form-em">
            <div class="form-group">
                <input type="text" name="name" class="fg-mr inpform-f" placeholder="Your name">
                <input type="text" name="socialname" class="inpform-f" placeholder="Social @username">
            </div>
            <div class="form-group">
                <div class="fg-mr fg-btn">
                    <input type="button" class="quantity-arrow-minus" value="-">
                    <input type="number" name="numberfo" class="quantity-num inpform-f" placeholder="No., of followers">
                    <input type="button" class="quantity-arrow-plus" value="+">
                </div>
                <div class="fg-btn">
                    <input type="email" name="email" class="inpform-f" placeholder="Your email">
                </div>
            </div>
            <textarea name="text" rows="5" class="inpform-f" placeholder="Enter your message..."></textarea>
            <div class="form-group">
            </div>
            <div class="form-group">
                <input class="fg-mr fg-clear" id="clear-form" value="Clear form" type="reset">
                <div class="fg-mr fg-wrap">
                    <input class="fg-mr fg-upload-none" type="file" name="myfile[]" multiple id="myfile" accept=".jpg" data-multiple-caption="{count} files selected" multiple>
                    <label id="upload-container" class="fg-upload" for="myfile"><strong>Load file</strong></label>
                </div>
                <button id="send-btn-form" class="fg-send button-f" type="submit" value="Send" onclick="submit()">Send message</button>
            </div>
        </div>
    </form>

main.min.js

$(function() {
    $("#main-form").on("submit", function(e) {

        let doc = document,
            formData = new FormData(),
            formFile = doc.getElementById("myfile");
        if (formFile.files && formFile.files.length == 1) {
            file = formFile.files[0]
            formData.set("myfile", file, file.name);
        }
        let nameForm = document.querySelector(".name");
        formData.set("name", nameForm.value)
        let socialnameForm = document.querySelector(".socialname");
        formData.set("socialname", socialnameForm.value)
        let numberfoForm = document.querySelector(".numberfo");
        formData.set("numberfo", numberfoForm.value)
        let emailForm = document.querySelector(".email");
        formData.set("email", emailForm.value)
        let textForm = document.querySelector(".text");
        formData.set("text", textForm.value)
        let request = new XMLHttpRequest();
        request.open('POST', "php/send.php");
        request.send(formData);
        e.preventDefault();
    });
});

php – принимаю вот так вот

$name = $_POST['name'];
$socialname = $_POST['socialname'];
$numberfollow = $_POST['numberfo'];
$email = $_POST['email'];
$text = $_POST['text'];
$file = $_FILES['myfile'];

Ответы (2 шт):

Автор решения: Igor
$(function() {
  $("#main-form").on("submit", function(e) {
    e.preventDefault();
    ...

И уберите onclick="submit()" из <button id="send-btn-form" class="fg-send button-f" type="submit" value="Send" onclick="submit()">Send message</button>. Зачем оно там нужно?

После этого посмотрите ошибки в консоли браузера. (Я Вам их скажу чуть позже.)


Вот они ошибочки:

$(function() {
  $("#main-form").on("submit", function(e) {
    e.preventDefault();

    let doc = document,
      formData = new FormData(),
      formFile = doc.getElementById("myfile");
    if (formFile.files && formFile.files.length == 1) {
      file = formFile.files[0]
      formData.set("myfile", file, file.name);
    }
    let nameForm = document.querySelector(".name");
    formData.set("name", nameForm.value)
    let socialnameForm = document.querySelector(".socialname");
    formData.set("socialname", socialnameForm.value)
    let numberfoForm = document.querySelector(".numberfo");
    formData.set("numberfo", numberfoForm.value)
    let emailForm = document.querySelector(".email");
    formData.set("email", emailForm.value)
    let textForm = document.querySelector(".text");
    formData.set("text", textForm.value)
    let request = new XMLHttpRequest();
    request.open('POST', "php/send.php");
    request.send(formData);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form enctype="multipart/form-data" id="main-form">
  <div class="form-em">
    <div class="form-group">
      <input type="text" name="name" class="fg-mr inpform-f" placeholder="Your name">
      <input type="text" name="socialname" class="inpform-f" placeholder="Social @username">
    </div>
    <div class="form-group">
      <div class="fg-mr fg-btn">
        <input type="button" class="quantity-arrow-minus" value="-">
        <input type="number" name="numberfo" class="quantity-num inpform-f" placeholder="No., of followers">
        <input type="button" class="quantity-arrow-plus" value="+">
      </div>
      <div class="fg-btn">
        <input type="email" name="email" class="inpform-f" placeholder="Your email">
      </div>
    </div>
    <textarea name="text" rows="5" class="inpform-f" placeholder="Enter your message..."></textarea>
    <div class="form-group">
    </div>
    <div class="form-group">
      <input class="fg-mr fg-clear" id="clear-form" value="Clear form" type="reset">
      <div class="fg-mr fg-wrap">
        <input class="fg-mr fg-upload-none" type="file" name="myfile[]" multiple id="myfile" accept=".jpg" data-multiple-caption="{count} files selected" multiple>
        <label id="upload-container" class="fg-upload" for="myfile"><strong>Load file</strong></label>
      </div>
      <button id="send-btn-form" class="fg-send button-f" type="submit" value="Send">Send message</button>
    </div>
  </div>
</form>

→ Ссылка
Автор решения: Артем

Почитал про FormData на MDN и сделал вот так вот, и это работает.
Оказалось можно не определять каждое значение input отдельно.
FormData будет использовать только те поля ввода, которые используют атрибут name.

$("#main-form").on("submit", function(e) {
    e.preventDefault();
    let formName = document.querySelector('#main-form');
    let formData = new FormData(formName);
    let request = new XMLHttpRequest();
    request.open('POST', "php/send.php");
    request.send(formData);
});
→ Ссылка