获取错误:“未捕获的TypeError:无法读取未定义的属性'长度'”

时间:2015-10-28 05:23:35

标签: javascript json soap

通过检查chrome dev工具Feed检索成功以及objidpersonidpersonname,{{1}等各个字段,我成功地使用我的客户端代码从wsdl获得响应在chrome dev控制台中显示。但persongroup检索显示错误

  

未捕获的TypeError:无法读取未定义的属性“长度”

我只需要显示personid和名称

main.js

resultset

的index.html

currentPage = {};

currentPage.init = function(){
    WL.Logger.debug("MainPage :: init");
};

function validate(){

    var username=$('#username').val();
    var password=$('#userpwd').val();

    busyIndicator.show();

    var params = {
            "process": {"username":username,"userpwd":password}
    };
        var invocationData = {
                adapter : 'SoapAdapter1',
                procedure : 'userlogin_ep_process',
                parameters : [params]
            };
        //{"process":{"username":"$('#username').val()","userpwd":"$('#userpwd').val()"}}
        WL.Client.invokeProcedure(invocationData,{
            onSuccess : loadFeedsSuccess,
            onFailure : loadFeedsFailure
        });
    }

    function loadFeedsSuccess(result){
        WL.Logger.debug("Feed retrieve success");
        busyIndicator.hide();

    alert(result.responseJSON.Envelope.Body.processResponse.PERSON_ID);
    //alert is priniting the value its working
    displayFeeds(result.responseJSON.Envelope.Body.processResponse);

    }

    function loadFeedsFailure(result){
        WL.Logger.error("Feed retrieve failure");
        busyIndicator.hide();
        WL.SimpleDialog.show("Inquiry", "Service not available. Try again later.", 
                [{
                    text : 'Reload',
                    handler : WL.Client.reloadApp 
                },
                {
                    text: 'Close',
                    handler : function() {}
                }]
            );
    }

        function displayFeeds(result){
            var ul = $('#mytable');
       //here i get length undefined error
            for (var i = 0; i < result.responseJSON.length; i++) {

                var li = $('<li/>').html("PERSONID:" +result[i].PERSONID);
                 li.append($('<li/>').html("PERSONNAME:" +result[i].PERSONNAME));

                 li.append($('<hr>'));
                 ul.append(li);
           }
        }

回应:

<label>username</label> <input type="text" id="username"><br><br>
<label>password</label> <input type="text" id="userpwd"><br><br>
<input type="submit" value="login" onclick="validate();">
<ul id="mytable"></ul>

1 个答案:

答案 0 :(得分:0)

您收到的对象中没有“responseJSON”,这就是“长度”错误未定义的原因:for (var i = 0; i < result.responseJSON.length; i++)。删除responseJSON并使用类似:How to get object length或其他方法。