Adam
Adam

Reputation: 20882

jquery building array isn't working

I'm trying to build an array of data that will then be ajax using post to php - below is my code:

$('#mainBodySaveSubmitButtonProfilePhotoIMG').click(function() {
    var profilePhotoArray = [];
    $('.mainUnapprovedProfilePhotoWrapperDIV').each(function() {
        var action = '';
        alert( this.id );

        if($('.mainUnapprovedProfilePhotoAttractiveIMG', this).is(':visible')) {
            alert('attractive...');
            action = 'attractive';
        }
        else if($('.mainUnapprovedProfilePhotoDeleteIMG', this).is(':visible')) {
            alert('delete...');
            action = 'delete';
        }else{
            alert('normal...');
            action = 'normal';
        }
        profilePhotoArray[this.id+'_'+this.id] = action;
    });

    alert(profilePhotoArray.length);

    for (i=0;i<profilePhotoArray.length;i++) {
        console.log("Key is "+i+" and Value is "+array[i]);
    }


    $.post('scripts/ajax/ajax_approval_functions.php', {
    'approvalProfilePhotos': '1',
    'approvalProfilePhotosData': profilePhotoArray},
    function(data) {
        alert(data);
    });
});

The if, else if, else section works fine as I can see the alerts.

When I try to alert the array length 'profilePhotoArray' it says 0 so I'm not populating the array correctly. Do I need to use .push()? I thought this format was ok?

Also do I need to do anything to the array before sending to php via ajax?

thankyou

** edit - I'm adding "profilePhotoArray[this.id+'_'+this.id] = action;" this.id twice just to prove this words as I will pass a second variable like this... am I better to use JSON for this?

Upvotes: 1

Views: 49

Answers (1)

DevZer0
DevZer0

Reputation: 13535

Javascript arrays use numerical index, therefore your storage is failing. Use a javascript Object to store string based keys.

var lang=new Object();
lang["foo"]="Foo";
lang["bar"]="Bar";

Upvotes: 3

Related Questions