TypeError: Cannot read property "length" of undefined.

I keep getting the error: TypeError: Cannot read property "length" of undefined.

It seems to happen at the line  searchparams: JSON.stringify(jsonObj)

Can anyone help me find out why?

function runAdvancedSearch() {
    disableAdvancedSearch()
    var resultsDiv = document.getElementById('searchResutsDiv');
    var jsonObj = new Object();
    if ($('#inpAdvSearchCaseId').val().length>0) {
        jsonObj.caseId = $('#inpAdvSearchCaseId').val();
    }
    if ($('#inpAdvSearchCaseNo').val().length>0) {
        jsonObj.caseNo = $('#inpAdvSearchCaseNo').val();
    }
    if ($('#inpAdvSearchCitationNo').val().length>0) {
        jsonObj.citationNo = $('#inpAdvSearchCitationNo').val();
    }
    var dtVal = null;
    if ($('#dtAdvSearchFiledFrom').val().length>0) {
        dtVal = toDateFrom_mmddyyyy($('#dtAdvSearchFiledFrom').val());
        if (isDate(dtVal)) {
            jsonObj.filedBetweenStart = dtVal.getTime();
        }
    }
    if ($('#dtAdvSearchFiledTo').val().length>0) {
        dtVal = toDateFrom_mmddyyyy($('#dtAdvSearchFiledTo').val());
        if (isDate(dtVal)) {
            jsonObj.filedBetweenEnd = dtVal.getTime();
        }
    }
    if ($('#inpAdvSearchCaseLegacyId').val().length>0) {
        jsonObj.legacyId = $('#inpAdvSearchCaseLegacyId').val();
    }
    if ($('#inpAdvSearchArrestNo').val().length>0) {
        jsonObj.arrestNo = $('#inpAdvSearchArrestNo').val();
    }
    if ($('#inpAdvSearchPartyLastName').val().length>0) {
        jsonObj.partyLastName = $('#inpAdvSearchPartyLastName').val();
    }
    if ($('#inpAdvSearchPartyFirstName').val().length>0) {
        jsonObj.partyFirstName = $('#inpAdvSearchPartyFirstName').val();
    }
    if ($('#inpAdvSearchPartyMiddleName').val().length>0) {
        jsonObj.partyMiddleName = $('#inpAdvSearchPartyMiddleName').val();
    }
    if ($('#dtAdvSearchPartyDOB').val().length>0) {
        dtVal = toDateFrom_mmddyyyy($('#dtAdvSearchPartyDOB').val());
        if (isDate(dtVal)) {
            jsonObj.partyDateOfBirth = dtVal.getTime();
        }
    }
    if ($('#inpAdvSearchDriversLicense').val().length>0) {
        jsonObj.driversLicense = $('#inpAdvSearchDriversLicense').val();
    }
    if ($('#inpAdvSearchSSN').val().length>0) {
        jsonObj.ssNo = $('#inpAdvSearchSSN').val();
    }
    if ($('#inpAdvSearchBookingNo').val().length>0) {
        jsonObj.bookingNo = $('#inpAdvSearchBookingNo').val();
    }
    if ($('#attyLastName').val().length>0) {
        jsonObj.attyLastName = $('#attyLastName').val();
    }
    if ($('#attyFirstName').val().length>0) {
        jsonObj.attyFirstName = $('#attyFirstName').val();
    }
    if ($('#attyMiddleName').val().length>0) {
        jsonObj.attyMiddleName = $('#attyMiddleName').val();
    }
    if ($('#barNo').val().length>0) {
        jsonObj.barNo = $('#barNo').val();
    }
    if ($('#judicialOfficer').val().length>0) {
        jsonObj.judicialOfficer = $('#judicialOfficer').val();
    }
    if ($('#magistrate').val().length>0) {
        jsonObj.magistrate = $('#magistrate').val();
    }
    $.ajax({
        url: '/ebench/search/run',
        type: 'POST',
        data : {
            searchparams: JSON.stringify(jsonObj)
        },
        dataType: 'json',
        success: function(data, status, request) {
            switch (request.status) {
                case 200: break;
                case 299: logout(); return;
                default:
                    errorFunction(request);
                    showEmptyAdvancedSearchResults(resultsDiv);
                    enableAdvancedSearch()
                    return;
            }
            try {
                resultsDiv.innerHTML = '';
                if (!data || data===null) {
                    showEmptyAdvancedSearchResults(resultsDiv);
                    enableAdvancedSearch()
                    return;
                }
                var list = jQuery.extend(true, [], data);
                if (list===null || list.length<1) {
                    showEmptyAdvancedSearchResults(resultsDiv);
                    enableAdvancedSearch()
                    return;
                }
                var elem = document.createElement('div');
                resultsDiv.appendChild(elem);
                var el = document.createElement('span');
                elem.appendChild(el);
                el.className = 'bigBoldText';
                el.textContent = 'Total cases found: '+list.length;
                var i=0;
                var divCode = null;
                var filedOn = null;
                var caseStatus = null;
                var style = null;
                for (i=0; i<list.length; i++) {
                    divCode = list[i].divCode;
                    if (divCode===null || divCode.length<1)
                        divCode = 'N/A';
                    filedOn = list[i].filedOn;
                    if (filedOn===null || filedOn.length<1)
                        filedOn = 'N/A';
                    else
                        filedOn = toStrDate_mmddyyyy(new Date(filedOn));
                    caseStatus = list[i].status;
                    if (caseStatus===null || caseStatus.length<1)
                        caseStatus = 'N/A';
                    style = list[i].style;
                    if (style===null || style.length<1)
                        style = 'N/A';
                    /*else
                        style = encodeHtml(style);*/
                    elem = document.createElement('div');
                    resultsDiv.appendChild(elem);
                    elem.className = 'row-fluid caseInfoHeader pointer backgroundColorNavyBlue';
                    elem.textContent = list[i].caseNo+' '+divCode+' '+filedOn+' '+caseStatus;
                    elem.onclick = getCaseFileScopePreserver(list[i].caseId);
                    elem = document.createElement('div');
                    resultsDiv.appendChild(elem);
                    elem.className = 'pointer marginBottom10';
                    elem.onclick = getCaseFileScopePreserver(list[i].caseId);
                    el = document.createElement('span');
                    elem.appendChild(el);
                    el.className = 'docketStyle';
                    el.textContent = style;
                }
            } catch (e) {
                errorFunction(e);
                showEmptyAdvancedSearchResults(resultsDiv);
                enableAdvancedSearch()
                return;
            }
        },
        error: function(data, status, request) {
            switch (data.status) {
                case 200:
                    errorFunction(request);
                    showEmptyAdvancedSearchResults(resultsDiv);
                    enableAdvancedSearch();
                    return;
                case 299: logout(); return;
                default: errorFunction(data.statusText);
            }
        }
    });
}

Open in new window

onaled777Asked:
Who is Participating?
 
Kyle HamiltonData ScientistCommented:
use your dev tools to figure out exactly which element is throwing the error. i suspect you mistyped one of the selectors.

or, post a link to the page so someone else can find the exact cause of the error.

if you do what fibo is suggesting you'll potentially just mask the error and submit an incomplete form
0
 
Bernard S.CTOCommented:
I would think it says that $('#inpAdvSearchCaseId').val() is undefined.

Maybe you meant $('#inpAdvSearchCaseId').value ?

Something more robust would probably be

if (typeof  $('#inpAdvSearchCaseId').value != "undefined") {...
0
 
Bernard S.CTOCommented:
Both using the correct functions and the correct variable names are needed.
B-) But using incorrect function names will surely mask any other error
0
Protect Your Employees from Wi-Fi Threats

As Wi-Fi growth and popularity continues to climb, not everyone understands the risks that come with connecting to public Wi-Fi or even offering Wi-Fi to employees, visitors and guests. Download the resource kit to make sure your safe wherever business takes you!

 
Kyle HamiltonData ScientistCommented:
it looks like onaled777 is using jQuery to select elements. In the case of jQuery, the function is val()
0
 
Kyle HamiltonData ScientistCommented:
@ onaled777 ,

If you're going to use id's and plain vanilla js, then you should probably get rid of the jQuery, in which case the correct property will be 'value' per fibo.

The entire code block is poorly written. If you provide a link to the page, you will probably get better advise.
0
 
onaled777Author Commented:
Thanks for your input all.  Yes I am in the process of getting more familiar with the debugging tools and was able to find the error the second time around.
0
 
Bernard S.CTOCommented:
B-) Glad we could help. Thx for the grade and points
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.