ReactJS Submit AJAX Form | ReactJs axios Form Submit


ReactJS में AJAX form submission एक common technique है जो user के inputs को backend server पर asynchronously send करने में help करती है।

AJAX (Asynchronous JavaScript and XML) React application को asynchronous calls करने में help करता है जिसमे page reload कि जरूरत नहीं होती। यह technique React applications को interactive और user-friendly बनाने में help करती है।

इस topic में हम देखेंगे कि React में AJAX form submission कैसे किया जाता है using fetch API और axios library के through, कैसे form data handle करते हैं और server पर send हैं।

ReactJs Submit Form Using fetch API

fetch API JavaScript का built-in API है जो asynchronous HTTP requests को handle करता है। इसका use करके हम easily AJAX requests send कर सकते हैं और responses को handle कर सकते हैं।

File : src/components/ContactForm.js

import React, { useState } from 'react'; function ContactForm() { const [formData, setFormData] = useState({ name: '', email: '', message: '' }); const [status, setStatus] = useState(''); const handleChange = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value }); }; const handleSubmit = async (e) => { e.preventDefault(); setStatus('Submitting...'); try { const response = await fetch('https://jsonplaceholder.typicode.com/posts', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); if (response.ok) { setStatus('Form submitted successfully!'); } else { setStatus('Form submission failed. Please try again.'); } } catch (error) { console.error('Error:', error); setStatus('An error occurred. Please try again.'); } }; return ( <form onSubmit={handleSubmit}> <label> Name: <input type="text" name="name" value={formData.name} onChange={handleChange} /> </label> <br /> <label> Email: <input type="email" name="email" value={formData.email} onChange={handleChange} /> </label> <br /> <label> Message: <textarea name="message" value={formData.message} onChange={handleChange} /> </label> <br /> <button type="submit">Submit</button> <p>{status}</p> </form> ); } export default ContactForm;
Explanation
  • Controlled Form Setup : formData state में name, email, और message fields store किये गए हैं और handleChange() function के through इन fields को update किया जाता है।

  • AJAX Request using fetch API : handleSubmit() function के अंदर fetch API का use करते हुए POST request भेजी जाती है और JSON data को body में stringify करके send किया जाता है।

  • Response Handling : Response मिलने पर success या failure के according से status update किया जाता है और user को feedback दिया जाता है।

ReactJs axios Example

axios एक popular HTTP client library है जो API requests को handle करने में help करती है और fetch से ज़्यादा flexible और readable syntax provide करती है।

पहले axios को अपने React project में install करें -

npm install axios
Form Component Setup with axios

File : src/components/FeedbackForm.js

import React, { useState } from 'react'; import axios from 'axios'; function FeedbackForm() { const [formData, setFormData] = useState({ name: '', email: '', feedback: '' }); const [status, setStatus] = useState(''); const handleChange = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value }); }; const handleSubmit = async (e) => { e.preventDefault(); setStatus('Submitting...'); try { const response = await axios.post('https://jsonplaceholder.typicode.com/posts', formData); if (response.status === 201) { setStatus('Feedback submitted successfully!'); } else { setStatus('Submission failed. Please try again.'); } } catch (error) { console.error('Error:', error); setStatus('An error occurred. Please try again.'); } }; return ( <form onSubmit={handleSubmit}> <label> Name: <input type="text" name="name" value={formData.name} onChange={handleChange} /> </label> <br /> <label> Email: <input type="email" name="email" value={formData.email} onChange={handleChange} /> </label> <br /> <label> Feedback: <textarea name="feedback" value={formData.feedback} onChange={handleChange} /> </label> <br /> <button type="submit">Submit</button> <p>{status}</p> </form> ); } export default FeedbackForm;
Explanation
  • axios Setup : axios.post के through form data को POST request में send किया गया है।

  • Error Handling : try...catch block के through errors को handle किया गया है और console.error के through error logs display किये गए हैं।

  • Status Update : Response के basis पर status message को update किया गया है जो user को feedback देता है।

ReactJs Form Validation & Error Handling

React में form submit करते वक्त basic validation और error handling करना best practice है। ये ensure करता है कि data correct format में submit हो और user को proper feedback मिले।

File : src/components/ValidatedContactForm.js

// ValidatedContactForm.js import React, { useState } from 'react'; import axios from 'axios'; function ValidatedContactForm() { const [formData, setFormData] = useState({ name: '', email: '', message: '' }); const [status, setStatus] = useState(''); const [errors, setErrors] = useState({}); const validateForm = () => { let formErrors = {}; if (!formData.name) formErrors.name = "Name is required"; if (!formData.email.includes('@')) formErrors.email = "Valid email is required"; if (!formData.message) formErrors.message = "Message cannot be empty"; return formErrors; }; const handleChange = (e) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value }); }; const handleSubmit = async (e) => { e.preventDefault(); const formErrors = validateForm(); if (Object.keys(formErrors).length > 0) { setErrors(formErrors); return; } setStatus('Submitting...'); setErrors({}); try { const response = await axios.post('https://jsonplaceholder.typicode.com/posts', formData); if (response.status === 201) { setStatus('Form submitted successfully!'); } else { setStatus('Form submission failed.'); } } catch (error) { console.error('Error:', error); setStatus('An error occurred. Please try again.'); } }; return ( <form onSubmit={handleSubmit}> <label> Name: <input type="text" name="name" value={formData.name} onChange={handleChange} /> {errors.name && <p style={{ color: 'red' }}>{errors.name}</p>} </label> <br /> <label> Email: <input type="email" name="email" value={formData.email} onChange={handleChange} /> {errors.email && <p style={{ color: 'red' }}>{errors.email}</p>} </label> <br /> <label> Message: <textarea name="message" value={formData.message} onChange={handleChange} /> {errors.message && <p style={{ color: 'red' }}>{errors.message}</p>} </label> <br /> <button type="submit">Submit</button> <p>{status}</p> </form> ); } export default ValidatedContactForm;
Explanation
  • Form Validation: validateForm() function form inputs को validate करता है और अगर validation fail होता है तो errors display करता है।

  • Error Display : Errors को red color में display किया गया है, जो user को incorrect input के bare में notify करता है।

  • AJAX Request on Success : Validation pass होने के बाद ही axios request send कि जाती है।

AJAX form submission के साथ proper validation और error handling करना applications को user-friendly और reliable बनाता है।

I Hope, आपको अब Idea आ गया होगा कि ReactJs में forms को कैसे AJAX के through submit करते हैं ।

Happy coding! 🎉

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook