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

गाइड

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

Nuxt को कॉन्टैक्ट फ़ॉर्म सबमिशन प्राप्त करने के लिए सर्वर रूट की आवश्यकता नहीं है। सादे HTML फ़ॉर्म को Nuxt पेज में डालें, या - यदि आप क्लाइंट-साइड फ़ीडबैक चाहते हैं - $fetch और सबमिशन स्थिति को ट्रैक करने के लिए ref के साथ Vue 3 <script setup> हैंडलर का उपयोग करें।

सादा 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>

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

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

pages/contact.vue
<!-- pages/contact.vue -->
<script setup lang="ts">
type Status = "idle" | "sending" | "ok" | "error";
const status = ref<Status>("idle");

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

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

  try {
    await $fetch("https://formhook.app/f/YOUR_API_KEY", {
      method: "POST",
      body: data,
    });
    status.value = "ok";
    form.reset();
  } catch {
    status.value = "error";
  }
}
</script>

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

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

सादा फ़ॉर्म स्निपेट किसी भी Nuxt पेज (pages/contact.vue) में संबंधित server/api रूट के बिना काम करता है। क्लाइंट-साइड सफलता/त्रुटि अवस्थाओं के लिए, दूसरा स्निपेट $fetch - Nuxt का इनबिल्ट fetch रैपर - और ref का उपयोग करता है जो स्थिति state machine चलाता है। दोनों सीधे formhook.app/f/YOUR_API_KEY को जाते हैं।

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

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

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

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

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

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

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

क्या मुझे फ़ॉर्म के लिए Nitro सर्वर रूट लिखना चाहिए?
नहीं। फ़ॉर्म सीधे Formhook को पोस्ट करता है, जिसका अर्थ है कि आपकी Nuxt साइट पूरी तरह स्थिर रह सकती है यदि आप वही चाहते हैं। बनाए रखने के लिए कोई /server/api/contact.ts नहीं।
क्या यह `nuxt generate` (स्थिर साइट) के साथ काम करता है?
हाँ। कॉन्टैक्ट फ़ॉर्म बस HTML POST है - इसे परवाह नहीं कि आपकी Nuxt साइट का बाक़ी हिस्सा स्थिर रूप से या एज पर रेंडर होता है।
API कुंजी कहाँ रखूँ? क्या इसे कमिट करना सुरक्षित है?
API कुंजी प्रति-फ़ॉर्म पहचानकर्ता है, पारंपरिक अर्थ में रहस्य नहीं - यह पहले से ही हर विज़िटर के HTML में उजागर है। इसे एक सार्वजनिक एंडपॉइंट पहचानकर्ता मानें और सुरक्षा के लिए Formhook की प्रति-फ़ॉर्म रेट लिमिट, CORS allowlist और Turnstile टॉगल पर निर्भर रहें।

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

Migrating from Formspree? See how Formhook compares.