Search code examples
javascriptjqueryarraysajaxeval

Declare empty array in javascript


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 push add data only to this array (10 rows) If I have 11 rows (product[10][0] and product[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
});


}

Solution

  • 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
    });