نمایش نتایج 1 تا 7 از 7

نام تاپیک: چرا مقدار لایک دیدگاه بصورت آنی و ایجکسی بروز نمیشه؟

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    پست
    248
    تشکر کردن
    135
    27 بار تشکر شده در 21 پست

    Question چرا مقدار لایک دیدگاه بصورت آنی و ایجکسی بروز نمیشه؟

    درود
    من برای هم پست و هم دیدگاه های پست سیستم لایک بصورت رو ایجکسی پیاده کردم،نکته اینجاست که برای خود پست بدرستی کار میکنه اما برای دیدگاه ها وقتی بعنوان کاربر لایک یا دیسلایک رو میزنم تو دیتابیس تغییر انجام میشه اما برای کاربر بصورت آنی نشون داده نمیشه و باید یکبار صفحه رو رفرش کنم تا تغییر نشون داده بشه!
    اینم کدهای اکشن،ویو اصلی و پارشال ویو نمایش لایک
    اکشن:

    [Route("likecmnt")]
    public ActionResult _LikeComment(int id, int i = 0)
    {
    if (i == 1)
    {


    SiteContext db = new SiteContext();
    Comment cmnt = db.Comments.Find(id);
    if (!User_Validate_cmnt(id))
    {
    ViewBag.lk = cmnt.LikeCmnt;
    return MessageBox.Show("شما قبلا رای دادید", MessageType.Alert, true);
    }
    else
    {
    cmnt.LikeCmnt++;
    TempData["addlk"] = cmnt.LikeCmnt;
    db.SaveChanges();
    return PartialView(TempData["addlk"]);
    }
    }
    else
    {
    return PartialView();
    }
    }

    پارشال ویو لایک





    @if (TempData["addlk"]!=null)
    {
    @TempData["addlk"]
    }
    else
    {
    @TempData["lk"]
    }




    ویو لایک

    foreach (var item in Model.comments)
    {
    <div class="box-cmnts">
    <div class="row">
    <div class="col col-md-6">
    <div class="like-cmnt">
    <a href="@Url.Action("_LikeComment", new { @id=item.ID,i=1})" data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#dv-likecmnt(@item.ID)"><i class="fa fa-thumbs-o-up"></i></a>
    <div style="display:inline-block" id="dv-likecmnt(@item.ID)">
    @Html.Partial("_LikeComment",TempData["lk"]=item.LikeCmnt)
    </div>


    اینو بگم اول خیلی ساده پیاده سازی کرده بودم،یعنی وقتی برای بار نخست صفحه لود میشه مقدار لایک توسط خود مدل صفحه از دیتابیس بارگزاری میشد و هربار که اکشن لایک فراخونی میشه این مقدار جایگزین میشد با مقدار ویوبک پارشال ویو! ولی اونم همین ایراد رو داشت .گمون کردم مشکل از ویوبک هستش که از تمپ دیتا استفاده کردم اما مشکل رفرش نشدن آنی برطرف نشده هنوز

  2. #2
    کاربر دائمی آواتار hakim22
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    Codehaks@
    پست
    1,716
    تشکر کردن
    330
    1,416 بار تشکر شده در 957 پست

    نقل قول: چرا مقدار لایک دیدگاه بصورت آنی و ایجکسی بروز نمیشه؟

    شما باید با جاوا اسکریپت تعداد لایک و دیسلایک رو کم و زیاد کنید.

  3. کاربرانی که به خاطر مطلب مفید hakim22 از وی تشکر کرده‌اند:


  4. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    پست
    248
    تشکر کردن
    135
    27 بار تشکر شده در 21 پست

    نقل قول: چرا مقدار لایک دیدگاه بصورت آنی و ایجکسی بروز نمیشه؟

    نقل قول نوشته شده توسط hakim22 مشاهده تاپیک
    شما باید با جاوا اسکریپت تعداد لایک و دیسلایک رو کم و زیاد کنید.
    آخه من از همین روش واسه لایک خود پست استفاده کردم و داره کار میکنه و فقط مشکلم فقط تو همین آنی رفرش نشدنه مربوط به دیدگاه هاست.هرکاری کردم نفهمیدم مشکلش چیه؟
    من تو این روش تعیین کردم کاربری با یک آی.پی مشخص فقط یکبار بتونه یک پست یا دیدگاه پست رو لایک-دیسلایک کنه.
    با جاوا اسکریپت میشه چنین چیزی رو پیاده سازی کرد؟
    میبشه یه مثال عملی برام اینجا نشون بدید؟

  5. #4
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    پست
    248
    تشکر کردن
    135
    27 بار تشکر شده در 21 پست

    نقل قول: چرا مقدار لایک دیدگاه بصورت آنی و ایجکسی بروز نمیشه؟

    من این تغییرات رو ایجاد کردم و خواستم به گفته شما با جاوااسکریپپ انجام بدم
    کنترلر

    [Route("_LikeComment")]
    public ActionResult _LikeComment(int id)
    {
    SiteContext db = new SiteContext();
    Comment cmnt = db.Comments.Find(id);
    if (!User_Validate_cmnt(id))
    {
    return MessageBox.Show("شما قبلا رای دادید", MessageType.Alert, true);
    }
    else
    {
    cmnt.LikeCmnt++;
    int lk = cmnt.LikeCmnt;
    db.SaveChanges();
    return Json(lk);
    }
    }



    <button style="background-color:transparent;border:none;display:inline-block" name="@item.ID" class="lk-cmnt"><i class="fa fa-thumbs-o-up"></i></button>
    <div style="display:inline-block" id="dv-likecmnt(@item.ID)">
    @item.LikeCmnt
    </div>



    $('.lk-cmnt').on({
    'click': function () {
    var id = $(this).attr('name');
    jQuery.ajax({
    url: "/_LikeComment",
    type: "GET",
    data: id,
    success: function (result) {
    var div = '#dv-likecmnt(' + id + ')';
    $(div).empty();
    $(div).append(msg);
    }
    });
    }
    });

    اما هیچ اتفاقی نمی افته و تو قسمت کنسول مروگر خطای
    jquery-3.3.1.min.js:2 GET http://localhost:51868/_LikeComment?2 500 (Internal Server Error)
    رو میده!یکی کمک کنه لطفا

  6. #5
    کاربر جدید
    تاریخ عضویت
    اردیبهشت 1397
    پست
    2
    تشکر کردن
    2
    یک بار تشکر شده در یک پست

    نقل قول: چرا مقدار لایک دیدگاه بصورت آنی و ایجکسی بروز نمیشه؟

    سلام یه سوال دارم Json شما تو کنترلر نباید JsonRequestBehavior داشته باشه؟ (پارامتر دوم return)

    نقل قول نوشته شده توسط پروگرامنویس مشاهده تاپیک
    من این تغییرات رو ایجاد کردم و خواستم به گفته شما با جاوااسکریپپ انجام بدم
    کنترلر

    [Route("_LikeComment")]
    public ActionResult _LikeComment(int id)
    {
    SiteContext db = new SiteContext();
    Comment cmnt = db.Comments.Find(id);
    if (!User_Validate_cmnt(id))
    {
    return MessageBox.Show("شما قبلا رای دادید", MessageType.Alert, true);
    }
    else
    {
    cmnt.LikeCmnt++;
    int lk = cmnt.LikeCmnt;
    db.SaveChanges();
    return Json(lk);
    }
    }



    <button style="background-color:transparent;border:none;display:inline-block" name="@item.ID" class="lk-cmnt"><i class="fa fa-thumbs-o-up"></i></button>
    <div style="display:inline-block" id="dv-likecmnt(@item.ID)">
    @item.LikeCmnt
    </div>



    $('.lk-cmnt').on({
    'click': function () {
    var id = $(this).attr('name');
    jQuery.ajax({
    url: "/_LikeComment",
    type: "GET",
    data: id,
    success: function (result) {
    var div = '#dv-likecmnt(' + id + ')';
    $(div).empty();
    $(div).append(msg);
    }
    });
    }
    });

    اما هیچ اتفاقی نمی افته و تو قسمت کنسول مروگر خطای
    jquery-3.3.1.min.js:2 GET http://localhost:51868/_LikeComment?2 500 (Internal Server Error)
    رو میده!یکی کمک کنه لطفا

  7. کاربرانی که به خاطر مطلب مفید Anoosh100 از وی تشکر کرده‌اند:


  8. #6
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    پست
    248
    تشکر کردن
    135
    27 بار تشکر شده در 21 پست

    نقل قول: چرا مقدار لایک دیدگاه بصورت آنی و ایجکسی بروز نمیشه؟

    نقل قول نوشته شده توسط Anoosh100 مشاهده تاپیک
    سلام یه سوال دارم Json شما تو کنترلر نباید JsonRequestBehavior داشته باشه؟ (پارامتر دوم return)
    سلام، آره باید باشه حواسم نبود جا انداخته بودم! ولی با گذاشتن پارامتر دوم هم مشکل برطرف نشد

  9. #7
    کاربر دائمی
    تاریخ عضویت
    شهریور 1389
    پست
    248
    تشکر کردن
    135
    27 بار تشکر شده در 21 پست

    نقل قول: چرا مقدار لایک دیدگاه بصورت آنی و ایجکسی بروز نمیشه؟

    بلاخره بعد از کلی کلنجار رفتن و بدبختی ایراد کار رو فهمیدم و درستش کردم!
    ایراد از آی.دی دیوهایی بود که قرار بود بعد از تغییر مقدار بروز بشن ! چون شمار دیوها زیاد بود من از یک پسوند با مقدار آی.دی دیدگاه ها برای اینکار استفاده کرده بودم ولی انگار مقدار data-ajax-update تگ a با آی.دی ویو مورد نظر بدلایلی یکی نمیشد و... خلاصه کد رو ببشکل زیر تغییر دادم و مشکلم حل شد.خدایی کلافه شده بودم ولی الان حالم جا اومد!


    // لایک دیدگاه
    [Route("_LikeComment")]
    public ActionResult _LikeComment(int id)
    {
    SiteContext db = new SiteContext();
    Comment cmnt = db.Comments.Find(id);
    if (!User_Validate_cmnt(id))
    {
    return MessageBox.Show("شما قبلا رای دادید", MessageType.Alert, true);
    }
    else
    {
    cmnt.LikeCmnt++;
    ViewBag.lk = cmnt.LikeCmnt;
    db.SaveChanges();
    return PartialView();
    }
    }


    [Route("dislikecmnt")]
    public ActionResult _DisLikeComment(int id)
    {
    SiteContext db = new SiteContext();
    Comment cmnt = db.Comments.Find(id);
    if (!User_Validate_cmnt(id))
    {
    ViewBag.dslikecmnt = cmnt.DisLikeCmnt;
    return MessageBox.Show("شما قبلا رای داده اید!", MessageType.Alert, true);
    }
    else
    {
    cmnt.DisLikeCmnt++;
    ViewBag.dslikecmnt = cmnt.DisLikeCmnt;
    db.SaveChanges();
    return PartialView();
    }
    }



    <div class="like-cmnt">
    @{string lk = "lk"+item.ID.ToString();
    }
    <a href="@Url.Action("_LikeComment", new { @id = item.ID })" data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#@lk"><i class="fa fa-thumbs-o-up"></i></a>
    <div style="display:inline-block" id="@lk">
    @item.LikeCmnt
    </div>
    @{string dk = "dk" + item.ID.ToString();
    }
    <a href="@Url.Action("_DisLikeComment", new { @id = item.ID })" data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#@dk"><i class="fa fa-thumbs-o-down"></i></a>
    <div style="display:inline-block" id="@dk">@item.DisLikeCmnt</div>
    </div>

  10. کاربرانی که به خاطر مطلب مفید پروگرامنویس از وی تشکر کرده‌اند:


تاپیک های مشابه

  1. سوال: چرا مقدار textBox و یا Label حروف نامفهوم نمایش داده می شود.
    نوشته شده توسط asp2.net در بخش ASP.NET
    پاسخ: 11
    آخرین پست: سه شنبه 18 تیر 1387, 17:04 عصر
  2. ]چرا مقدار اولیه نمیگیره
    نوشته شده توسط bebakhshid در بخش C#‎‎
    پاسخ: 1
    آخرین پست: شنبه 04 اسفند 1386, 15:55 عصر
  3. چرا مقدار یک متغیر استاتیک از بین می ره؟
    نوشته شده توسط elham.net در بخش C#‎‎
    پاسخ: 5
    آخرین پست: دوشنبه 11 دی 1385, 11:20 صبح
  4. چرا مقدار این متغییر null است
    نوشته شده توسط bebakhshid در بخش VB.NET
    پاسخ: 4
    آخرین پست: چهارشنبه 26 مرداد 1384, 19:04 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •