Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

JavaScript - adding rows to array from SOAP call fails - TypeError: Cannot set property "0.0" of undefined to ""

Posted on 2013-10-28
3
918 Views
Last Modified: 2013-10-30
Background:  This is an excerpt from the  Post_Execution Code segment from a CA Technologies Process Automation custom operator. "Get CI Details Process"

The upstream inputs to this SOAP call are correct and this code works:

Process.CI_Length__ = Process[OpName].SelectDataResponse.UDSObject.length;
for ( j = 0; j < Process[OpName].SelectDataResponse.UDSObject.length; j++ )
{
  str = "row" + j;
  Process[OpName].Rows[str] = newValueMap();
  var myAttributes = new Array();
  myAttributes = Local[IconName].SelectDataResponse.UDSObject[j].Attributes[0].Attribute;
  
  Process.CI_Name__[j] = myAttributes[0].AttrValue[0].text_;
  Process.CI_Support_Cont1_Name__[j] = myAttributes[1].AttrValue[0].text_;
  Process.CI_Support_Cont2_Name__[j] = myAttributes[2].AttrValue[0].text_;
  Process.CI_Support_Cont3_Name__[j] = myAttributes[3].AttrValue[0].text_;
  Process.CI_Network_Cont_Name__[j] = myAttributes[4].AttrValue[0].text_;
  Process.CI_UUID__[j] = myAttributes[5].AttrValue[0].text_;
  
  Process.OperatorResultCode__ = "SUCCESS";
}

Open in new window


However, when I add 3 new inputs to the call and then try to capture them in the response:
 
  Process.CI_Length__ = Process[OpName].SelectDataResponse.UDSObject.length;
for ( j = 0; j < Process[OpName].SelectDataResponse.UDSObject.length; j++ )
{
  str = "row" + j;
  Process[OpName].Rows[str] = newValueMap();
  var myAttributes = new Array();
  myAttributes = Local[IconName].SelectDataResponse.UDSObject[j].Attributes[0].Attribute;
  
  Process.CI_Name__[j] = myAttributes[0].AttrValue[0].text_;
  Process.CI_Support_Cont1_Name__[j] = myAttributes[1].AttrValue[0].text_;
  Process.CI_Support_Cont2_Name__[j] = myAttributes[2].AttrValue[0].text_;
  Process.CI_Support_Cont3_Name__[j] = myAttributes[3].AttrValue[0].text_;
  Process.CI_Network_Cont_Name__[j] = myAttributes[4].AttrValue[0].text_;
  Process.CI_UUID__[j] = myAttributes[5].AttrValue[0].text_;
  Process.CI_Med_Risk_App_Group__[j] = myAttributes[6].AttrValue[0].text_;
  Process.CI_High_Risk_App_Group__[j] = myAttributes[7].AttrValue[0].text_;
  Process.CI_QA_App_Group__[j] = myAttributes[8].AttrValue[0].text_;
  
  Process.OperatorResultCode__ = "SUCCESS";
}

Open in new window


I get the error in the subject line.

I have verified the new input parameters and responses are correct both via SoapUI and by examining the response prior the execution of the code.

Based on my search on the error, the new variables are never being defined.  The "0.0" made me think it was a type error however, the responses from myAttributes[1]-[4] are exactly the same type.  These are UUID's as strings, even if they can begin with number.  The values are not NULL nor empty strings.
0
Comment
Question by:shadowbreeze
  • 2
3 Comments
 
LVL 82

Accepted Solution

by:
leakim971 earned 500 total points
ID: 39608279
add the following just before the << for >> loop :
if(!Process.CI_Med_Risk_App_Group__) Process.CI_Med_Risk_App_Group__ = [];
if(!Process.CI_High_Risk_App_Group__) Process.CI_High_Risk_App_Group__ = [];
if(!Process.CI_QA_App_Group__) Process.CI_QA_App_Group__ = [];

Open in new window

0
 

Author Comment

by:shadowbreeze
ID: 39610446
Adding the identity test and then explicitly declaring the array did make the error message disappear, but the new array elements are not populated.

I can't find anywhere upstream of this where the previous elements were explicitly declared. (I'm not saying they aren't - just that I haven't found them).
0
 

Author Closing Comment

by:shadowbreeze
ID: 39611720
This does resolve the issue.  (I had continued working on it before your post and introduced a typo later in the code block - so that was why it wasn't capturing the response).
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Hide cell in a table 2 27
jQuery Scroll To Top 5 38
removing a class in javascript 4 48
Button function on table is in trouble 3 21
In Part 1 (http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/A_7849-Hex-Maze.html) we covered the hexagonal maze basics -- how the cells are represented in a JavaScript array and how the maze is displayed.  In this part, we'…
This article discusses the difference between strict equality operator and equality operator in JavaScript. The Need: Because JavaScript performs an implicit type conversion when performing comparisons, we have to take this into account when wri…
The purpose of this video is to demonstrate how to set up the WordPress backend so that each page automatically generates a Mailchimp signup form in the sidebar. This will be demonstrated using a Windows 8 PC. Tools Used are Photoshop, Awesome…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)

861 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question