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

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

کاربر سایت

rahimi.med

عضویت از 1396/08/03

get jQuery ajax response

  • چهارشنبه 8 آذر 1396
  • 19:34
تشکر میکنم

سلام

من یک فانکشن به این صورت دارم

<script>
$(function () {
        $('#Phase_id').on('change', function () {

            var z = 6;
            var y = 4;
            var t = $('#Phase_id').val();

            $.ajax({
                type: 'POST',
                url: ' @Url.Action("Home", "Phase")',
                data: {  third: z, forth: y, fifth: t },
                datatype: JSON,
                asyn: !1,
                error:function(){alert ("خطا در هنگام بررسی فاز ")},

                success: function (Reply, Code) {

                    if (Reply == 'true') {
                        if (Code = "1") {

                            $('#P_WindowH3').modal('show');
                        }
                        else if (Code = "2") {
                            $('#P_WindowH1').modal('show');
                        }
                        else if (Code ="3") {
                            $('#P_WindowH2').modal('show');
                        }
                            }
                        else {
                            $("#StartDate").focus();
                            alert("موردی دیده نشد")
                        }
                   
                }
            });
        });
    });
</script>

 

که با مراجعه به این متد یک مقدار را بر می گرداند


if (PhaseID == 2 || PhaseID == 6)
                {


                    if (CBCid.ToString() != null)
                    {

                        if ((Hemoglobin < 80) && (platelets < 30000))
                        {

                            if ((granulocyte < 100) && (infection == true))
                            {

                                return Json("True", "1", JsonRequestBehavior.AllowGet);
                            }
                            else
                            {
                                return Json("True", "2", JsonRequestBehavior.AllowGet);
                            }
                        }
                        else if ((granulocyte < 100) && (infection == true))
                        {

                            if ((Hemoglobin < 80) && (platelets < 30000))
                            {

                                return Json("True", "1", JsonRequestBehavior.AllowGet);
                            }
                            else
                            {
                                return Json("True", "3", JsonRequestBehavior.AllowGet);
                            }
                        }
                        else
                        {
                            return Json("False", JsonRequestBehavior.AllowGet);
                        }

براساس داده های من این خط به فانکشن برگردانده می شود

  return Json("True", "1", JsonRequestBehavior.AllowGet);

ولی فانکشن من همیشه وارد این بخش می شود

 else {
                            $("#StartDate").focus();
                            alert("موردی دیده نشد")
                        }

ایراد فانکشنی که نوشتم کجاست که کدهای ارسال شده را اجرا نمی کند؟

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

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

alibahman47

عضویت از 1395/11/13

  • چهارشنبه 8 آذر 1396
  • 19:57

این که این خط :

return Json("True", "1", JsonRequestBehavior.AllowGet);

به سمت View برگشت داده میشه نشون میده که در سمت Controller اکشن مربوط بدرستی کار کرده و مقدار رو برگشت داده و مشکل از سمت همین کد Jquery Ajax هست.

کد رو به صورت زیر تغییر بده و تست کن :

        <script>
            $(function () {
                $('#Phase_id').on('change', function () {
 
                    var z = 6;
                    var y = 4;
                    var t = $('#Phase_id').val();
 
                    $.ajax({
                        type: 'POST',
                        url: ' @Url.Action("Home", "Phase")',
                        data: {  third: z, forth: y, fifth: t },
                        datatype: JSON,
                        asyn: !1,
                        error:function(){alert ("خطا در هنگام بررسی فاز ")},
 
                        success: function (result) {
 
                            if (result.Reply == 'true') {
                                if (result.Code = "1") {
 
                                    $('#P_WindowH3').modal('show');
                                }
                                else if (result.Code = "2") {
                                    $('#P_WindowH1').modal('show');
                                }
                                else if (result.Code ="3") {
                                    $('#P_WindowH2').modal('show');
                                }
                            }
                            else {
                                $("#StartDate").focus();
                                alert("موردی دیده نشد")
                            }
                    
                        }
                    });
                });
            });
        </script>

کاربر سایت

سهیل علیزاده

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

  • چهارشنبه 8 آذر 1396
  • 21:06

لازم نیست مقدار JSON بازگردانی شده از نوع string باشد میتوان به صورت anonymous type ارسال کنید:

            return Json(new {Reply =true , Code = 1 } , JsonRequestBehavior.AllowGet);
$(function () {
    $('#Phase_id').on('change', function () {

        var z = 6;
        var y = 4;
        var t = $('#Phase_id').val();

        $.ajax({
            type: 'POST',
            url: ' @Url.Action("Home", "Phase")',
            data: {  third: z, forth: y, fifth: t },
            error:function(){alert ("خطا در هنگام بررسی فاز ")},

            success: function (result) {

                if (result.Reply == true) {
                    if (result.Code == 1) {

                        $('#P_WindowH3').modal('show');
                    }
                    else if (result.Code == 2) {
                        $('#P_WindowH1').modal('show');
                    }
                    else if (result.Code == 3) {
                        $('#P_WindowH2').modal('show');
                    }
                }
                else {
                    $("#StartDate").focus();
                    alert("موردی دیده نشد")
                }
         
            }
        });
    });
});

همچنین در نام گذار مقادیر رو اشتباه وارد کردید.

کاربر سایت

rahimi.med

عضویت از 1396/08/03

  • چهارشنبه 8 آذر 1396
  • 23:09

هر دوتا راه حل را امتحان کردم و مشکل هنوز پابرجاست و باز کد مربوط به مقدار False را نمایش می دهد

(نکته شماره های پنجره های مدال ربطی به اعداد کدها ندارد)

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • پنجشنبه 9 آذر 1396
  • 01:47
موردی که مهندس علیزاده نوشتن کامل تر بود و دو مورد دیگه رو هم اصلاح کردن ،از همون مورد استفاده کنید و عملگر های مقایسه رو هم اشتباه گذاشتی ، همه تک = ها مربوط به If ها رو به دو == تغییر بده مشکل حل میشه .
کاربر سایت

rahimi.med

عضویت از 1396/08/03

  • پنجشنبه 9 آذر 1396
  • 18:04

سلام

return Json(new {Reply ="true" , Code = 1 } , JsonRequestBehavior.AllowGet);

متشکرم. راه حل آقای علیزاده مشکل را حل کرد

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

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

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

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