טופס יצירת קשר ב-JavaScript ששולח לדואר

Formgong team ·

טופס יצירת קשר ב-JavaScript עדיין צריך כתובת ל-POST. קראו ל-fetch, שלחו את השדות וקראו את תשובת JSON. Formgong מקבל את הקריאה בלי שרת שלכם. אין צורך בספרייה או במסלול API. במסלול החינמי Telegram מיידי, והדואר הוא תקציר יומי. אין צורך ב-SMTP משלכם.

העתיקו את טופס ה-JavaScript הזה

JavaScript
<form id="fg-contact" action="https://formgong.com/submit" method="POST">
  <input type="hidden" name="access_key" value="fk_your_access_key">
  <input type="hidden" name="_lang" value="he">
  <label>שם <input type="text" name="name" autocomplete="name" placeholder="השם שלך" required></label>
  <label>אימייל <input type="email" name="email" autocomplete="email" placeholder="you@example.com" required></label>
  <label>הודעה <textarea name="message" placeholder="איך נוכל לעזור?" required></textarea></label>
  <div aria-hidden="true" style="position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)">
  <label>השאירו שדה זה ריק<input type="text" name="botcheck" tabindex="-1" autocomplete="off"></label>
</div>
  <button type="submit">שליחה</button>
  <p role="status"></p>
</form>
<script>
  const form = document.querySelector("#fg-contact");
  const status = form.querySelector("[role=status]");
  form.addEventListener("submit", async (event) => {
    event.preventDefault();
    const button = form.querySelector("button");
    button.disabled = true;
    const fields = Object.fromEntries(new FormData(form));
    try {
      const response = await fetch(form.action, {
        method: "POST",
        headers: { "Content-Type": "application/json", Accept: "application/json" },
        body: JSON.stringify(fields),
      });
      const result = await response.json();
      status.textContent = result.message || (result.success ? "נשלח. תודה!" : "השליחה נכשלה. נא לנסות שוב.");
      if (result.success) form.reset();
    } catch {
      status.textContent = "אין חיבור. נא לנסות שוב.";
    } finally {
      button.disabled = false;
    }
  });
</script>
שלחו FormData במקום JSON
שלחו FormData במקום JSON
<script>
  const form = document.querySelector("#fg-contact");
  form.addEventListener("submit", async (event) => {
    event.preventDefault();
    const status = form.querySelector("[role=status]");
    try {
      const response = await fetch("https://formgong.com/submit", {
        method: "POST",
        headers: { Accept: "application/json" },
        body: new FormData(form),
      });
      const result = await response.json();
      status.textContent = result.message || (result.success ? "נשלח. תודה!" : "השליחה נכשלה. נא לנסות שוב.");
      if (!result.success) return;
      form.reset();
    } catch {
      status.textContent = "אין חיבור. נא לנסות שוב.";
    }
  });
</script>
רק קריאת fetch, אם הטופס כבר בעמוד
רק קריאת fetch, אם הטופס כבר בעמוד
async function onSubmit(event) {
  event.preventDefault();
  const fields = Object.fromEntries(new FormData(event.currentTarget));
  const response = await fetch("https://formgong.com/submit", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Accept: "application/json",
    },
    // _lang: language of Formgong messages and the autoreply (multilingual site: document.documentElement.lang).
    body: JSON.stringify({ _lang: "he", ...fields, access_key: "fk_your_access_key" }),
  });
  const result = await response.json();
  if (!result.success) throw new Error(result.message || "השליחה נכשלה. נא לנסות שוב.");
  return result.message; // localized "Sent. Thank you!"
}

איך טפסים עובדים ב-JavaScript

אנשים מחפשים טופס JavaScript ששולח דואר, לא טופס fetch. fetch הוא רק קריאת הדפדפן שעושה POST. אין צורך ב-EmailJS, ב-Axios או במסלול שרת.

שלחו כותרת Accept עם application/json, אחרת הנקודה עונה בהפניה כמו טופס רגיל. fetch שנכשל זורק. פנייה שנדחתה חוזרת עם success על false ועם טקסט שאפשר להציג.

הגדרה ב-JavaScript

  1. צרו טופס ב-Formgong והעתיקו את המפתח.
  2. הדביקו את הקוד למעלה. זה טופס וסקריפט קצר: async ו-await, JSON ו-try catch לשגיאות רשת.
  3. השאירו את שדה הפיתיון ריק ומחוץ למסך. אם בוט ממלא אותו, הפנייה נשמרת כספאם ולא נמסרת.
  4. הסקריפט מכבה את הכפתור בזמן הבקשה ואז מציג את טקסט התשובה. הצלחה מנקה את הטופס.
  5. פתחו את העמוד החי ושלחו ניסיון. בדקו את התיבה, ואז חברו Telegram אם אתם רוצים התראה בטלפון.

דרכים לשלוח טופס JavaScript

אפשרותמה אתם מפעיליםמה אתם מקבלים
mailto:כלום על שרת. תוכנת הדואר נפתחת.הודעה רק אם המבקר שולח. בטלפון זה נשבר בקלות.
מסלול API משלכםשרת, SMTP וסוד.דואר שאתם שולטים בו. גם הספאם, הנפילות והקוד אצלכם.
EmailJSהסקריפט שלהם בעמוד.דואר דרך השירות שלהם. אין כאן מחיר. הוא לא נבדק מחדש באותו יום.
Formspreeכלום. הדפדפן שולח אל Formspree.דואר ולוח. בחינם 50 שליחות בחודש. Personal עולה 15 דולר בחודש.
Formgongכלום. fetch שולח אל Formgong.Telegram מיד. ב-Free הדואר הוא תקציר יומי. 300 שליחות בחודש, נתונים באיחוד האירופי.

מחירי Formspree מ-formspree.io/plans ב-2026-10-06. המגבלות של Formgong מהקוד. EmailJS מופיע בחיפוש הזה. המחיר לא נבדק מחדש באותו יום. Web3Forms.com החזיר HTTP 403, ולכן הוא לא בטבלה.

חבילת רכיבים: npm install @formgong/core (npm: @formgong/core)

הוספה לפרויקט קיים: npx formgong init (npm: formgong)

fetch, ספרייה או השרת שלכם?

השתמשו בעמוד הזה כשהטופס הוא JavaScript רגיל, רכיב קטן או חלון. המבקר נשאר בעמוד.

השתמשו ב-HTML פשוט אם JavaScript עלול להיות כבוי. לטופס למעלה עדיין יש action, אז הוא עובד גם בלי הסקריפט.

כתבו שרת משלכם רק אם הפנייה חייבת לשנות נתונים באפליקציה. EmailJS שולח דרך הסקריפט שלו. Formgong הוא POST אחד.

שאלות ותשובות

האם JavaScript שולח טופס לדואר בלי שרת?

הדפדפן לא מדבר SMTP. הוא יכול לשלוח את השדות ב-POST אל צד שרת. צד השרת שולח את הדואר. אתם לא מפעילים שרת לטופס הזה.

לשלוח FormData או JSON?

JSON מתאים לשדות טקסט. FormData מתאים אם הטופס כבר קיים ואם שולחים קבצים. שניהם מגיעים לאותה תיבה. אל תגדירו Content-Type בעצמכם על FormData.

למה אני מקבל הפניה במקום JSON?

POST של טופס רגיל מחזיר הפניה. כדי לקבל JSON שלחו כותרת Accept עם application/json. אחר כך קראו את success ואת הטקסט.

איך לטפל בשגיאות?

fetch שנכשל זורק. זו שגיאת רשת. פנייה שנדחתה מחזירה JSON עם success על false. הציגו את הטקסט והשאירו את מה שהאדם הקליד.

האם צריך EmailJS או ספרייה אחרת?

לא. fetch כבר בדפדפן. ספרייה מתאימה אם אתם כבר משתמשים בה. שלחו את אותם שדות ואותן כותרות.

התחילו חינם