Declare empty array in javascript
Solution 1
In the succes of your ajax call use the function push()
product.push([]);
This adds an array at the last index of product
. Like that ,the index 10
is created and you have an extra data.
If you want to add a dynamic number of rows, use this code :
var number_of_new_row = 11; // 11 for example, you can use any number >= 0
for(; number_of_new_row--;)
product.push([]);
Another way
In your ajax return save the new length of your array product
in a global variable.
And use it before your loop to reset your array and initialize it with the new length.
var lengthArray = 10; // update the value in the callback of your ajax call
And your loop :
var product = [];
for(; lengthArray--;)
product.push([]);
$('#contextreload ul').each(function(i, ul) {
//<strike> var product = $(ul).html(); </strike>
allline = i;
$('#reloadajax'+i+' li').each(function(lk, li) {
var lilk = $(li).html();
product[i][lk]=lilk;
alert(lilk+lk);
// your code goes here
});
// your code goes here
});
Solution 2
Note: this line of your code produces a string, not an array.
var product = $(ul).html(); //returns string not an array
what you need is something like
var product_arr = {}; // an object or
var product_arr = []; // an array
Solution 3
The following code used to declare empty array in javascript
var product_arr = new Array(); //declaring empty array
console.log(product_arr);
user3944364
Updated on July 05, 2020Comments
-
user3944364 almost 4 years
update
My code that works. When page is loaded
product= [[],[]];
then the code executed after ajax call:
$('#contextreload ul').each(function(i, ul) { product.push([]); }); $('#contextreload ul').each(function(i, ul) { allline=i; $('#reloadajax'+i+' li').each(function(lk, li) { var lilk = $(li).html(); product[i][lk]=lilk; // your code goes here }); // your code goes here });
To use eval(); in ajax response for this, with some changes in php file? /endupdate
product[0]=[1,2,3,4];
product[1]=[a,b,x,z];
.
.
product[10]=[extra,extra,extra,extra];
When I load the page this is executed:
product= [[],[],[],[],[],[],[],[],[],[]];
But if I declare this, when I call ajax I can
pushadd data only to this array (10 rows) If I have 11 rows (product[10][0]
andproduct[10][1]
), the extra data will not be added. After ajax call I need the extra data :product= [[],[],[],[],[],[],[],[],[],[],**[11]**];
This function is because I want to put data in array after loading ajax data from php file.
$('#contextreload ul').each(function(i, ul) { <strike> var product = $(ul).html(); </strike> allline = i; $('#reloadajax'+i+' li').each(function(lk, li) { var lilk = $(li).html(); product[i][lk]=lilk; alert(lilk+lk); // your code goes here }); // your code goes here }); }