सामग्री पर जाएँ
सभी गाइड

गाइड

SvelteKit कॉन्टैक्ट फ़ॉर्म (कोई बैकएंड नहीं चाहिए)

SvelteKit को कॉन्टैक्ट सबमिशन प्राप्त करने के लिए अपने form actions एंडपॉइंट की आवश्यकता नहीं है। आप वही सादा HTML फ़ॉर्म एक +page.svelte में डाल सकते हैं, या - यदि आप इनलाइन सफलता/त्रुटि अवस्थाएँ चाहते हैं - $state और fetch के साथ एक छोटे Svelte 5 कंपोनेंट का उपयोग करें।

सादा HTML फ़ॉर्म उपयोग करें

आपको API रूट की ज़रूरत नहीं है। फ़ॉर्म सीधे Formhook को POST करता है, और आपके फ़्रेमवर्क को सबमिशन छूना ही नहीं पड़ता।

contact.html
<form action="https://formhook.app/f/YOUR_API_KEY" method="POST">
  <label>
    Email
    <input type="email" name="email" required />
  </label>

  <label>
    Message
    <textarea name="message" required></textarea>
  </label>

  <!-- honeypot: bots fill this; humans don't see it -->
  <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" hidden />

  <!-- optional: send users to a thank-you page after a native POST -->
  <input type="hidden" name="_redirect" value="https://example.com/thanks" />

  <button type="submit">Send</button>
</form>

या SvelteKit में fetch से सबमिट करें

इस संस्करण का उपयोग करें यदि आप पूर्ण पेज रीलोड के बिना क्लाइंट-साइड सफलता/त्रुटि अवस्थाएँ चाहते हैं।

src/routes/contact/+page.svelte
<!-- src/routes/contact/+page.svelte -->
<script lang="ts">
  let status = $state<"idle" | "sending" | "ok" | "error">("idle");

  async function onSubmit(e: SubmitEvent) {
    e.preventDefault();
    status = "sending";

    const form = e.currentTarget as HTMLFormElement;
    const data = Object.fromEntries(new FormData(form));

    const res = await fetch("https://formhook.app/f/YOUR_API_KEY", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(data),
    });

    status = res.ok ? "ok" : "error";
    if (res.ok) form.reset();
  }
</script>

{#if status === "ok"}
  <p>Thanks - we'll be in touch.</p>
{:else}
  <form onsubmit={onSubmit}>
    <input type="email" name="email" placeholder="Email" required />
    <textarea name="message" placeholder="Message" required></textarea>
    <input type="text" name="_gotcha" tabindex="-1" hidden />
    <button type="submit" disabled={status === "sending"}>
      {status === "sending" ? "Sending…" : "Send"}
    </button>
    {#if status === "error"}
      <p>Something went wrong. Please try again.</p>
    {/if}
  </form>
{/if}

यह कैसे काम करता है

सादा फ़ॉर्म स्निपेट किसी भी +page.svelte में काम करता है - कोई +page.server.ts नहीं, कोई SvelteKit form action हैंडलर नहीं। यदि आप क्लाइंट-साइड UX चाहते हैं, दूसरा स्निपेट Svelte 5 runes ($state) का उपयोग करता है और सीधे formhook.app/f/YOUR_API_KEY को पोस्ट करता है। एंडपॉइंट JSON, form-encoded या multipart स्वीकार करता है, इसलिए JSON के रूप में सीरियलाइज़ Object.fromEntries(new FormData(form)) सबसे सरल रास्ता है।

आगे क्या होता है

  • सबमिशन एक सेकंड के भीतर आपके Formhook डैशबोर्ड में आता है।
  • हर सक्षम डिवाइस पर पुश सूचना बजती है।
  • अपना बाहरी ईमेल सेटअप किए बिना डैशबोर्ड से सीधे उत्तर दें (Pro और इससे ऊपर)।
  • आपका SvelteKit डिप्लॉय स्थिर (या लगभग स्थिर) बिल्ड रहता है - कॉन्टैक्ट फ़ॉर्म के लिए सर्वर एडैप्टर की आवश्यकता नहीं।

आज ही अपना SvelteKit कॉन्टैक्ट फ़ॉर्म लॉन्च करें।

मुफ़्त साइन अप करें, फ़ॉर्म बनाएँ, API कुंजी पेस्ट करें। पाँच मिनट।

मुफ़्त में शुरू करें

मुफ़्त स्तर: 5 फ़ॉर्म · 250 सबमिशन/माह · क्रेडिट कार्ड नहीं चाहिए।

SvelteKit कॉन्टैक्ट फ़ॉर्म - FAQ

क्या मुझे SvelteKit form action या +page.server.ts फ़ाइल लिखनी चाहिए?
नहीं। फ़ॉर्म सीधे Formhook को POST करता है। यह आपके SvelteKit डिप्लॉय को static-friendly रखता है - Cloudflare Pages, Vercel static, GitHub Pages on adapter-static, कहीं भी काम करता है।
पूर्ण पेज रीलोड के बिना सफलता स्थिति कैसे संभालूँ?
fetch-आधारित स्निपेट का उपयोग करें। यह $state वैरिएबल को idle → sending → ok/error से ट्रैक करता है और POST 200 लौटाने पर फ़ॉर्म को धन्यवाद संदेश से बदल देता है। फ़ॉर्म कभी नेटिव सबमिट नहीं होता, इसलिए ब्राउज़र नेविगेट नहीं करता।
क्या यह adapter-static / GitHub Pages के साथ काम करता है?
हाँ। चूँकि सबमिशन formhook.app को जाता है, आपकी SvelteKit साइट को सर्वर रनटाइम की आवश्यकता नहीं है। स्थिर रूप से बिल्ड करें, कहीं भी डिप्लॉय करें।

अन्य फ़्रेमवर्क के लिए गाइड

Migrating from Formspree? See how Formhook compares.