Jak przesłać tablicę asocjacyjną?

0

Mam tablice:

var arrayData = new Array(); 
arrayData['TW'] = 1;
arrayData['BT'] = 0;
arrayData['ST'] = 1;
arrayData['KB'] = 0;

Po wciśnięciu guzika chcę wysłać tę tablicę używając $.ajax

prepare(dataID,arrayData);

Następnie funkcja prepare tworzy sobie tablice danych do wysyłki

 function prepare(parData,parParams){
     var varParams = {};
     varParams.myID = parData;
     varParams.selectedData = parParams;

     $.ajax({
         type: 'POST',
         url: '/ajax/prepare',
         data: varParams,
         dataType: "json",
     });
 });

Następnie w pliku prepare do którego idą dane a jest to plik php ustawiłem sobie tak żeby zwrócił mi to co dostał z parametrów by sprawdzić czy wszystko się zgadza.

    function prepare() {
        $respond = array(
            'ttt' => $this->varParams,
        );
        exit(json_encode($respond));
    }

Po zwrotce w konsoli mam tylko "myID": "3", natomiast nie dostaje zwrotki z tablicą.
Tablica jest z kluczami wartości i próbowałem tak:

     var varParams = {};
     varParams.myID = parData;
     for (i in parParams) {
         varParams.i = parParams[i];
     }

Chciałem osiągnąć efekt w stylu

varParams.myID = 3;
varParams.TW = 5;
varParams.BT = 0; 

Ale poległem i nie mam już pomysłu co tu zrobić.

1

Widzisz i nie grzmisz…

JS nie ma tablic asocjacyjnych, a to co robisz to zuo w czystej postaci. Powinieneś zrobić tak:

var data = {
  'TW': 1,
  'BT': 0,
  'ST': 1,
  KB': 0
};

By wysłać to co masz AJAXem jako JSON robisz po prostu:

$.post('/ajax/prepare', JSON.stringify({
  myID: 'some_id',
  selectedData: data
}));
0

No tak zapomniałem o Objectach. Faktycznie działa idealnie. Wysyłam Jsonem w PHP decoduje i mam tablice jaka potrzebowalem. Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1