jquery函数和if块的问题

时间:2013-08-27 19:52:36

标签: c# jquery ajax asp.net-mvc

感谢提前阅读我的问题,我有一个jquery函数,我使用一个标志变量($ act)运行一个if块,但它始终为零(0)并且永远不会更改,因为if块不起作用,任何帮助将不胜感激

http://jsfiddle.net/ricardojriosr/CWF6G/

function recibo_pago() {

        var errores = [];
        var $checkedRecords_facts = $('.checkedRecords:checked');
        var $checkedRecords_pagos = $('.checkedRecords2:checked');
        var $f_rec = $('#fecha_recibo');
        var $n_rec = $('#numero_recibo');
        var $act = 0;

        var $CodClie = codigo_cliente;

        if ($checkedRecords_facts.length < 1) {
            errores.push('Debe Seleccionar al menos una factura');
        }

        if ($checkedRecords_pagos.length < 1) {
            errores.push('Debe Seleccionar al menos un Pago');
        }

        if ($f_rec.val() == '') {
            errores.push('Debe Ingresar la fecha del Recibo de Pago');
        }

        if (errores.length == 0) {

            $arreglo_facts = [];
            $arreglo_pagos = [];

            $checkedRecords_facts.each(function (index) {
                $arreglo_facts.push($(this).text());
            });
            $checkedRecords_pagos.each(function (index) {
                $arreglo_pagos.push($(this).text());
            });

            var $jsonString_facts = JSON.stringify($arreglo_facts);
            var $jsonString_pagos = JSON.stringify($arreglo_pagos);

            if ($n_rec.val() == '') {
                jConfirm('¿Estas seguro que desea guardar el Recibo de Pago sin Número de Control?', 'Confirmar Guardar sin Número de Control', function ($r) {
                    if ($r) {
                        //it changes value here to 1, i used console.log to see it
                        $act = 1;
                    } else {
                        $n_rec.focus();
                    }
                });                
            } else {
                $act = 1;
            }
            //Here the $act value is zero (0) and does not work the code inside the if block, help please
            if ($act == 1) {
                console.log($act);
                var datos = { facts: $jsonString_facts, pags: $jsonString_pagos, Fecha: $f_rec.val(), NoRecibo: $n_rec.val() };

                $.ajax({
                    url: direccion + 'PROG_4394/GuardarReciboPago',
                    dataType: "json",
                    data: datos,
                    success: function (data) {
                        jAlert(data.mensaje, data.titulo);
                        if (data.success) {
                            jAlert("ENVIO TRUE", "PRUEBA");
                        }
                    }
                })

            }

        } else {

            var DivErrores = $('#errores');
                Errores = errores;
            if (Errores.length > 0) {
                DivErrores.html('<h1>Errores</h1>')
                    .append('<p>Verifique los siguientes errores antes de continuar</p>')
                    .append('<ul>');
                Errores.forEach(function (error) {
                    DivErrores.append('<li><p style="display: inline;">' + error + '</p>' + '</li>');
                });
                DivErrores.append('</ul><br/>');
            } else {
                DivErrores.empty();
            }

        }
    }

1 个答案:

答案 0 :(得分:0)

感谢@HanleEscaño的指导

这是一个确认模式async,所以我基本上把它分成两个函数来解决这个问题

 function llamada_recibo_pago($jsonString_facts, $jsonString_pagos, $f_rec, $n_rec) {
        var datos = { facts: $jsonString_facts, pags: $jsonString_pagos, Fecha: $f_rec, NoRecibo: $n_rec };

        $.ajax({
            url: direccion + 'PROG_4394/GuardarReciboPago',
            dataType: "json",
            data: datos,
            success: function (data) {
                jAlert(data.mensaje, data.titulo);
                if (data.success) {
                    jAlert("ENVIO TRUE", "PRUEBA");
                }
            }
        })
    }

在asyn函数中调用llamadas就像这里一样

//alert($act);
            if ($n_rec.val() == '') {
                jConfirm('¿Estas seguro que desea guardar el Recibo de Pago sin Número de Control?', 'Confirmar Guardar sin Número de Control', function ($r) {
                    if ($r) {
                        $act = 1;
                        llamada_recibo_pago($jsonString_facts, $jsonString_pagos, $f_rec.val(), $n_rec.val());
                    } else {
                        $n_rec.focus();
                    }
                });                
            } else {
                $act = 1;
            }
            //Here the $act value is zero (0) and does not work the code inside the if block, help please
            //alert($act);

            if ($act == 1) {
                llamada_recibo_pago($jsonString_facts, $jsonString_pagos, $f_rec.val(), $n_rec.val());
            }