为什么Object的属性在作为参数传递时未定义

时间:2014-02-07 10:27:57

标签: jquery json rest

为什么在这个JavaScript方法中传递参数使得它的属性未定义,这就是我现在正在尝试的,

    $.each(data.GetSomeRestMethodResult, function (index, item) {
            $("#sTable").append(AnotherMethods(item.a, item.b, item.c));
        });

    function AnotherMethods(a, b, c) {
        alert(a +" - "+ b +" - "+ c);
        var r = "<tr class='Row' onclick='LoadDetails(" + a + b + c ")'></tr>"
    }

现在,如果我使用chrome Sources和debug,item有所有值,但是当我查看子函数中的参数时,它们都是未定义的:(

修改

解决了这个问题,因为WCF Web服务正在发送特定类型对象的数组(我自己更改了但忘了更新JS)但是下面是对我有用的,

    $.each(data.GetSomeRestMethodResult.TYPEOFOBJECT, function (index, item) {
            $("#sTable").append(AnotherMethods(item.a, item.b, item.c));
        });

    function AnotherMethods(a, b, c) {
        alert(a +" - "+ b +" - "+ c);
        var r = "<tr class='Row' onclick='LoadDetails(" + a + b + c ")'></tr>"
    }

以上代码是手写的,抱歉我无法发布所有代码,因为它太多了@ webservices,完整的js文件等。

1 个答案:

答案 0 :(得分:2)

(根据您的更新更新)

问题是你使用AnotherMethods的返回值(将返回值传递给append),但AnotherMethods实际上并没有返回任何内容。它只是创建一个变量r。您还遇到语法错误(+之后缺少c)。

这适用于:例如:

$.each(data.GetSomeRestMethodResult, function (index, item) {
  $("#sTable").append(AnotherMethods(item.a, item.b, item.c));
});

function AnotherMethods(a, b, c) {
  return "<tr class='Row' onclick='LoadDetails(" + a + b + c + ")'><td>Row for " + a + ", " + b + ", " + c + "</td></tr>";
}

Live Copy | Source