Jak przesłać tablicę asocjacyjną?

Odpowiedz Nowy wątek
2015-01-04 19:44
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ć.

edytowany 1x, ostatnio: masterO, 2015-01-04 19:45
Nie używaj new Array(). Nie dość, że [] jest krótsze, to jeszcze nie będzie błędu, że ktoś nadpisał Array. - hauleth 2015-01-05 02:00

Pozostało 580 znaków

2015-01-04 20:59

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
}));
edytowany 2x, ostatnio: hauleth, 2015-01-04 21:00

Pozostało 580 znaków

2015-01-04 21:23
0

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

Jak już mówiłem w JSie nie ma tablic, a tym bardziej asocjacyjnych. Od biedy można by się uprzeć, że nie ma też funkcji. - hauleth 2015-01-05 01:52
No ja w ogole nie rozumie JS dlatego przy nim jak siedzę to mnie coś trafia. Ale uparłem się że zrobie i zrobiłem. Teraz poprawki i optymalizacja :D ughhh od biedy można sie uprzeć że nie ma JS hehe - masterO 2015-01-05 01:58

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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