这些实际上是我用来从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。
我找不到问题所在。
感谢您的帮助
答案 0 :(得分:0)
您的SuspendActionOp
函数由2个参数定义
SuspendActionOp(barcode, owner)
但是您使用ActionsOp
SuspendActionOp(barcode, num, owner);
因此,显然在这种情况下num
将具有owner
值!