ارسال اطلاعات فرم به سمت سرور توسط Ajax
می خوام اطلاعات فرم خودمو به سمت سرور ارسال کنم. ولی مرتبا خطا میده و یا در سمت سرور نمیتونم مقادیر رو دریافت کنم.
دستورات Html به صورت زیر هستن
<form id="frmcreateQuestion">
<div class="form-group col-xs-12">
<label asp-for="Model.questionDate" class="control-label"></label>
<div class="col-md-10 col-xs-12">
<label class="control-label" style="color:green;">
@DateAndTimeShamsi.DateShamsi()
</label>
</div>
</div>
<div class="form-group col-xs-12">
<label asp-for="Model.Title" class="control-label"></label>
<div class="col-md-10 col-xs-12">
<input asp-for="Model.Title" id="Title" type="text" class="form-control" placeholder="عنوان را وارد کنید ..." />
</div>
</div>
<div class="form-group">
<label asp-for="qModel.GroupID" class="control-label"></label>
<div class="col-md-10 col-xs-12">
<select asp-for="Model.GroupID" id="sltGroup" data-live-search="true">
<option value="1">مایعات</option>
<option value="2">جامدات</option>
<option value="3">گاز</option>
<option value="4">میعانات</option>
</select>
</div>
</div>
<div class="form-group">
<script src="~/ckeditor/ckeditor.js"></script>
<label class="control-label" asp-for="Model.Content">
متن
<span style="color:red; font-size:35px;" class="hidden" id="spnContenterror">☚</span>
</label>
<div class="col-md-10 col-xs-12">
<textarea asp-for="Model.Content" id="Content" class="form-controltext-editor">متن خود را کامل بنویسید ...</textarea>
</div>
<script>
CKEDITOR.replace('Content');
</script>
</div>
<input id="btnsubmit" type="button" value="ایجاد" class="btn btn-facebook form-group" />
</form>
لطفا بفرمایید اطلاعات فرم به سمت سرور توسط Ajax به چه صورتی هست؟
ارسال اطلاعات فرم به سمت سرور توسط Ajax
برای ارسال اطلاعات فرم به سمت سرور توسط ایجکس راههای مختلفی وجود داره که براتون به ترتیب شرح میدم. البته شما کدهای جی کوئری خودتون رو قرار ندادید تا اشکال شما رو بررسی کنیم و خطاتون رو بگم.
-
استفاده از متد serialize
اولین روشی که شما می تونید اطلاعات فرم خودتون رو به سمت سرور ارسال کنید استفاده از متد Serilizث در جی کوئری هست. دقت کنید که این متد هیچ گونه آرگومانی برای ارسال به سمت سرور قبول نمی کنه.
در ادامه یک مثال برای استفاده از این متد میبینیم. فرض می کنیم که دقیقا همون تگ form کدهایی که شما در متن سوال نوشتید وجود داره. حالا میخوایم ببینیم که چجوری میتونیم توسط ایجکس این فرم رو به سمت سرور ارسال کنیم :
<script>
$("#frmcreateQuestion").on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '@Url.Action("ActionName", "ControllerName")',
data: $('#frmcreateQuestion').serialize()
}).done(function (res) {
if (res.status === 'success') {
//عملیات موفق بود
}
else if (res.status === 'faild') {
//عملیات ناموفق بود
}
});
});
</script>
خب در این مثال وقتی فرم submit میشه این اسکریپت اجرا میشه و کلیه input ها و select های موجود در form رو به سمت سرور ارسال میکنه. در این روش فقط المان های درون فرم به سمت سرور ارسال میشه.
دریافت مقادیر ارسال شده توسط ایجکس در کنترلر
خب بعد از اینکه اطلاعات رو توسط جی کوئری ایجکس و توسط متد serialize به سمت کنترلر ارسال کردیم در سمت سرور باید اطلاعات را دریافت کنیم. دریافت اطلاعات بسیار ساده می باشد:
public class ControllerName : Controller
{
[HttpPost]
public IActionResult ActionName(Model model)
{
//عملیاتی دلخواه روی مدل انجام می شود
return View();
}
}
-
ارسال مقادیر فرم توسط Variable
اما روش دیگری که برای اطسال اطلاعات form به سمت سرور هست اینه که تک تک مقادیر موجود در form در متغیرهایی ذخیره بشه و بعد توسط خاصیت data به سمت سرور ارسال بشه. در ادامه یک مثال میبینیم :
<script>
$("#btnsubmit").on('click', function (e) {
e.preventDefault();
var title = $("#Title").val();
var groupid = $(#GroupID).val();
var content = $('#Content').val();
$.ajax({
type: 'POST',
url: '@Url.Action("ActionName", "ControllerName")',
data: {Title : title, GroupId = groupid, Content = content},
}).done(function (res) {
if (res.status === 'success') {
//عملیات موفق بود
}
else if (res.status === 'faild') {
//عملیات ناموفق بود
}
});
});
</script>
خب در سمت سرور هم میشه به روشی که قبلا برای کار با serialize گفته شده مقادیر رو دریافت کرد. اما میشه به صورت مستقیم هم مقادیر رو دریافت کرد که این روش رو هم در ادامه با هم میبینیم :
public class ControllerName : Controller
{
[HttpPost]
public IActionResult ActionName(string Title, string Content, int GroupID)
{
//عملیاتی دلخواه روی مدل انجام می شود
return View();
}
}
-
ارسال اطلاعات form توسط ایجکس توسط متد FormData
یک روش دیگه هم برای ارسال اطلاعات form به سمت سرور وجود داره و اون هم استفاده از FormData هست. این روش معمولا زمانی کاربرد داره که بخوایم فایل یا عکسی رو هم به سمت سرور ارسال کنیم.
برای استفاده از این روش میتونید مثال زیر رو به عنوان یک سمپل ببینید
<script>
var UploadImage = function () {
var data = new FormData;
var file = $("#myfiles").get(0);
var files = file.files;
for (var i = 0; i < files.length; i++) {
data.append('files', files[i]);
}
$.ajax({
type: "post",
url: '@Url.Action("ActionName","ControllerName")',
data: data,
contentType: false,
processData: false,
}).done(function (result) {
if (result.status == "success") {
//عملیات موفق
}
}).fail(function (result) {
//عملیات ناموفق
}
});
}
</script>
دقت کنید که در اینجا myfiles نام input ما می باشد که فایل یا تصویر را دریافت می کند.
روش های دیگه ای هم برای ارسال اطلاعات فرم به سمت کنترلر یا سرور وجود داره. مثلا ارسال آرایه به سمت سرور و ...
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- حذف فایلها و دستورات Css و JavaScript اضافی
- جمع کردن (Collapse) منوی جانبی موقع لود فرم در پنل AdminLte
- دلیل خطای Identifier 'X' has already been declared در جی کویری چیست ؟
- جدا کردن سه رقم سه رقم اعداد در input با جاوااسکریپت
- محدود کردن تایپ عدد یا حروف با جاوا اسکریپت
- مقایسه بین فریم ورک های Angular و React.js و Vue js
- نمایش پیغام گرافیکی با جی کویری
- تفاوت Class Component و Functional Component در React.js چیست ؟
- پراپس (Props) در React.js چیست ؟
- مقایسه مقدار اینپوت باکس با type آن در جی کویری