مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mrpeach

عضویت از 1394/04/13

ارسال فرم با ajax

  • پنجشنبه 5 بهمن 1396
  • 01:57
تشکر میکنم

با سلام من یک پروژه در حال ساخت دارم و در ایت پروژه من در چندین جای مختلف از ajax استفاده کرده و به راحتی جواب گرفتم البته همه این موارد من فقط یک مقدار را با ajax به کنترلر ارسال میکردم در یکی از view ها من کل فرم رو از طریق کد زیر به کنترلر ارسال میکنم

$("#btnReplyMessage").click(function () {
    $.ajax({
        url: $('replyForm').attr('action'),
        contentType: 'application/html; charset=utf-8',
        type: 'GET',
        data: $('#replyForm').serialize(),
        dataType: 'html'
    }).success(function (result) {
        $('#chatTitle').val(title);
        $('#chatDetails').html(result);
        $('#Notes').val('');
    }).error(function (xhr, status) {
        alert('خطا در دریافت اطلاعات!!! لطفا دوباره تلاش نمایید.');
    });
    return false;
});

در قسمت کنترلر هم این فرم را با کد زیر دریافت میکنم

public ActionResult CreateAjax([Bind(Include = "ChatId,AdvertiseId,Notes")] CreateMessageModels model)
        {
            AdvertiseModels advertise = db.Advertises.Find(model.AdvertiseId);

            if (advertise != null)
            {
                string userId = User.Identity.GetUserId();
                ChatModels chat = db.Chats.Find(model.ChatId);
                chat.Update = DateTime.Now;
                db.Entry(chat).State = EntityState.Modified;

                MessageModels message = new MessageModels()
                {
                    Notes = model.Notes,
                    Sender = userId,
                    Status = false,
                    Time = DateTime.Now,
                    ChatId = chat.ChatId
                };
                db.Messages.Add(message);
                db.SaveChanges();
                return PartialView("_MessageDetailsPartial", chat);
            }
            return RedirectToAction("Index");
        }

کل فرم هم به صورت زیر است

<form action="~/Message/CreateAjax" id="replyForm" role="form">
    <input type="hidden" value="@Model.ChatId" name="ChatId" id="ChatId" />
    <input type="hidden" value="@Model.AdsId" name="AdvertiseId" id="AdvertiseId" />
    <textarea name="Notes" id="Notes" class="form-control content-group" rows="3" cols="1" placeholder="متن پیام..."></textarea>
    <div class="row">
        <div class="col-xs-6">&nbsp;</div>
        <div class="col-xs-6 text-right">
            <button type="submit" id="btnReplyMessage" class="btn bg-primary btn-labeled btn-labeled-right"><b><i class="icon-circle-left2"></i></b> ارسال</button>
        </div>
    </div>
</form>

مشکل من اینجاست که کنترلر بعد از انجام پروسه patrial view رو به من نشون میده و مقدارش رو به تابع ajax باز نمیگردونه

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • پنجشنبه 5 بهمن 1396
  • 10:01

با سلام 

دوست عزیز شما نوع دکمه ارسال از نوع submit رو به button تغییر بده ، بعد در کد ajax در پر کردن url نحوه فراخوانی رو اشتباه انجام دادی و # رو برای انتخاب فراموش کردی بزاری - این دوتا کار رو انجام بده ببین مشکلت حل نمیشه

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • پنجشنبه 5 بهمن 1396
  • 13:02

برای این که result  را دریافت کنید به جای  success از done استفاده کنید.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)