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?

Improve company productivity with a Business Account.Sign Up

x
 
Kyle HamiltonConnect With a Mentor Data 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.Connect With a Mentor 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
Worried about phishing attacks?

90% of attacks start with a phish. It’s critical that IT admins and MSSPs have the right security in place to protect their end users from these phishing attacks. Check out our latest feature brief for tips and tricks to keep your employees off a hackers line!

 
Kyle HamiltonConnect With a Mentor Data ScientistCommented:
it looks like onaled777 is using jQuery to select elements. In the case of jQuery, the function is val()
0
 
Kyle HamiltonConnect With a Mentor Data 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.