می خوام اطلاعات فرم خودمو به سمت سرور ارسال کنم. ولی مرتبا خطا میده و یا در سمت سرور نمیتونم مقادیر رو دریافت کنم.
دستورات 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 به چه صورتی هست؟
برای ارسال اطلاعات فرم به سمت سرور توسط ایجکس راههای مختلفی وجود داره که براتون به ترتیب شرح میدم. البته شما کدهای جی کوئری خودتون رو قرار ندادید تا اشکال شما رو بررسی کنیم و خطاتون رو بگم.
اولین روشی که شما می تونید اطلاعات فرم خودتون رو به سمت سرور ارسال کنید استفاده از متد 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();
}
}
اما روش دیگری که برای اطسال اطلاعات 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 هست. این روش معمولا زمانی کاربرد داره که بخوایم فایل یا عکسی رو هم به سمت سرور ارسال کنیم.
برای استفاده از این روش میتونید مثال زیر رو به عنوان یک سمپل ببینید
<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 ما می باشد که فایل یا تصویر را دریافت می کند.
روش های دیگه ای هم برای ارسال اطلاعات فرم به سمت کنترلر یا سرور وجود داره. مثلا ارسال آرایه به سمت سرور و ...
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/07/09
- ساعت :
07:25:00 PM
- بازدید :
234
- پاسخ :
0
|
تاریخ :
1403/05/20
- ساعت :
09:18:00 PM
- بازدید :
393
- پاسخ :
0
|
تاریخ :
1402/01/26
- ساعت :
03:38:00 PM
- بازدید :
1211
- پاسخ :
1
|
تاریخ :
1398/08/09
- ساعت :
10:17:00 PM
- بازدید :
4589
- پاسخ :
1
|
تاریخ :
1402/11/13
- ساعت :
12:48:00 AM
- بازدید :
849
- پاسخ :
4
|
تاریخ :
1402/08/06
- ساعت :
01:20:00 PM
- بازدید :
700
- پاسخ :
1
|
تاریخ :
1398/08/21
- ساعت :
03:53:00 PM
- بازدید :
3045
- پاسخ :
1
|
تاریخ :
1398/08/03
- ساعت :
10:17:00 PM
- بازدید :
16952
- پاسخ :
4
|
تاریخ :
1402/04/30
- ساعت :
08:10:00 AM
- بازدید :
893
- پاسخ :
2
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
370
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
909
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
891
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1281
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4746
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1113
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
564
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
72
- پاسخ :
0
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
300
- پاسخ :
1
|