传递给js函数的值似乎为null,但不是

时间:2018-11-15 12:54:33

标签: javascript asp.net ajax razor

这些实际上是我用来从js调用特定api的函数:

function SuspendActionOp(barcode, owner) {
//alert(barcode+" - "+num);
alert(owner);
if (owner == null) {
    alert('owner is null');
} else {
    $.ajax({
        url: 'http://myserver/myapp/api/Actions?action=2&barcode=' + barcode + '&owner=' + owner,
        //data: { id: barcode },
        dataType: 'json',
        type: 'post',
        success: function (a) {
            //var t = JSON.parse(a);
            if (a.result.localeCompare("suspended") == 0) {
                $("#details_" + barcode).modal("hide");
                setTimeout(MachinesBigOp(), 2000);
            } else {
                alert("Error");
            }
        }
    });

}
}

此函数由调用(且所有者具有值):

function ActionsOp(stato, barcode, num, owner) {
alert('ActionsOp '+owner);
var btngroup = document.createElement('div');
btngroup.classList.add("btn-group");

switch (stato) {

    case 1:
        var s = document.createElement("a");            
        s.onclick = function () {
            //var t = owner;
            alert(owner);
            SuspendActionOp(barcode, num, owner);
        };
        s.classList.add("btn");
        s.classList.add("btn-warning");
        s.innerHTML = "❚❚";

        btngroup.appendChild(s);
        var e = document.createElement("a");

        e.classList.add("btn");
        e.classList.add("btn-danger");
        e.innerHTML = "✔";
        e.onclick = function () {
            this.parentNode.parentNode.appendChild(ModalEndOp(barcode, owner));
            $('#end_' + barcode).modal({ backdrop: false });
        };
        e.style.marginLeft = "40px";
        btngroup.appendChild(e);
        break;
    case 2:
        var a = document.createElement("a");

        a.onclick = function () {
            this.parentNode.parentNode.appendChild(ModalStartOp(barcode, owner));
            $("#start_" + barcode).modal({ backdrop: false });
        };
        a.classList.add("btn");
        a.classList.add("btn-success");
        a.innerHTML = "⚡";
        btngroup.appendChild(a);
        break;
    case 4:
        break;
}
return btngroup;
}

来自:

function ModalDetailsOp(num, owner) {
    alert('ModalDetailsOp' + owner);  
   //.........
   var azioni = document.createElement('td');
   azioni.appendChild(ActionsOp(a[i].Stato, a[i].Barcode, a[i].NumMachine, owner));
    //.........
}

来自:

    function MachinesBigOp(owner) {
        alert('MachinesBigOp'+owner);
        $.ajax({
            url: 'GetMachines',
            data: {},
            dataType: 'json',
            type: 'get',
            success: function (a) {

                var cont = document.getElementById("machineContainer");
                cont.innerHTML = "";
                var l = a.length;
                var i = 0;
                for (i = 0; i < l; i++) {
                    var m = document.createElement("a");
                    m.classList.add('machine');
                    m.classList.add('hover-shadow');
                    m.classList.add('show');
                    m.style.color = "black";
                    cont.appendChild(ModalDetailsOp(a[i].NumMachine,owner));
//.....
}

最后是html剃刀页面:

<script>
    $(function () {
        filterSelection("all");
        filterInit();
        MachinesBigOp('@Session["id"].ToString()');
    });

</script>

但是,当我传递带有其值的owner变量和调用SuspendActionOp()时,所有者值是null。 我找不到问题所在。 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的SuspendActionOp函数由2个参数定义

SuspendActionOp(barcode, owner)

但是您使用ActionsOp

中的3个参数进行调用
SuspendActionOp(barcode, num, owner);

因此,显然在这种情况下num将具有owner值!