دریافت اطلاعات توسط Ajax و نمایش آن در input
با سلام
من در فرم خودم میخام بعد از انتخاب در تگ Select به صورت Ajax نام و نام خانوادگی به فرم اضافه بشه .
دریافت اطلاعات توسط Ajax و نمایش آن در input
بهتر بود اگر کدی نوشتید رو قرار بدید تا اشکالات شما رو بتونیم بررسی کنیم. چون این مشکلی که شما دارید راه حلش قدری طولانی هست.
شما برای دریافت اطلاعات توسط ایجکس باید مراحل زیر رو انجام بدید.
- مرحله اول این هست که باید وقتی کاربر یک کد ملی رو از لیست انتخاب میکنه در همین لحظه اطلاعات از طریق ایجکس به سرور ارسال کنید. برای این منظور باید در رویداد change لیست دستورات ایجکس رو بنویسید:
<select id='cmbMellicode'></select>
<input id='txtName' type='text' />
<input id='txtFamily' type='text' />
<script>
$("#dropdownlist").change(function (e){
e.preventDefault();
$.ajax({
type: "post",
url: '@Url.Action("ActionName","Controller")',
data: { mellicode : $("cmbMellicode option:selected").Text() },
}).done(function (res) {
if (result.status == "success") {
$("#txtName").val(res.firstname);
$("#txtFamily").val(res.family);
}
});
</script>
خب در دستورات بالا وقتی کدملی از لیست انتخاب میشه همون لحظه رویداد change اجرا میشه و کدملی کاربر به سمت کنترلر ارسال میشه و پاسخی که ازسمت کنترلر برگشت داده میشه در قسمت done از دستور Ajax دریافت میشه و اطلاعات نمایش داده میشه. اما در سمت کنترلر هم باید اطلاعات رو به سمت ویو برگشت داد.
- مرحله دوم دریافت اطلاعات ارسال شده از سمت View در کنترلر هست.
[httppost]
public IActionResult Action(string mellicode)
{
var getUserInfo = _context.Users.Where(u => u.melliCode == mellicode).Select(new { firstname = u.FirstName, family = u.Family}).Single();
return Json(new (status = 'success', firstname = getUserInfo.firstname, family = getUserInfo.family ));
}
دستورات بالا هم در سمت کنترلر اجرا میشن و اطلاعات کاربر شامل نام و نام خانوادگی رو از دیتابیس استخراج میکنن و توسط دستور return Json به سمت ویو برگشت میدن. دستورات بالا ممکنه تغییرات کوچکی هم نیاز داشته باشن که چون شما هیچ گونه کدی قرار ندادید نمیشد دقیقا نوشت.
نکته : دقت کنید که متغیرهایی که به سمت ویو ارسال می کنید باید حتما حروف کوچک باشن (family و fitrstname)
موفق باشید