![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 3 Dołączył: 30.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
łącze się z takim problemem iż mam funkcję do której przekazuję tablicę jako parametr, a dokładnie tablicę parametrów np: Kod var params = new Array(); params['p1'] = 1; params['p2'] = 2; params['text'] = 'text'; params['last_param'] = 0; function postParams( params ) { var params_string = ""; for(name in params) { params_string += "&"+name+"="+params[name]; } // i dalej przesylamy ajaxem parametry... } problem polega na tym, że w tej tablicy czasem w ostatnim elemencie przesyłają się nieporządane dane, typu params['nazwa_jakiejś_funkcji'] = cialo_jakiejś_funkcji (IMG:style_emoticons/default/blinksmiley.gif) przykład: Kod ajax_post.php?p1=1&p2=2&text=text&remove=function (b) { var a = this.indexOf(b); if (a != -1) { this.splice(a, 1); } return this; }&sortDates=function () { return this.sort(function (a, b) {return a.getTime() - b.getTime();}); }&last_param=0 i z niewinnie wyglądającej tablicy tworzy mi się jakiś potwór!? (IMG:style_emoticons/default/blinksmiley.gif) Czy to może być związane z przeglądaniem tablicy for'em ? Jak to jest możliwe że w wyjściowym stringu oprócz zdefiniowanych parametrów mam jeszcze jakiś szit? Z góry dzięki za odp! Pozdrawiam. Ten post edytował iwosz 28.01.2011, 13:28:06 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Ponieważ zwraca Tobie też metody obiektu Array, możesz dać warunek że tylko gdy name jest stringiem, lub użyć normalnej konstrukcji for'a.
Ten post edytował melkorm 28.01.2011, 13:37:13 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 62 Pomógł: 3 Dołączył: 30.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ponieważ zwraca Tobie też metody obiektu Array, możesz dać warunek że tylko gdy name jest stringiem, lub użyć normalnej konstrukcji for'a. Hmm, no tak ale czemu zmienna 'params' przechowuje tez te metody jako kolejne wartości tablicy? Rozumiem że to jest instancja typu Array i można dla niej wywołać dane metody, ale to nie powinno wpływać na wartości tablicy, czy nie mam racji? Co do zwykłego for'a to jak mogę odczytać indeksy tablicy aby skleić poprawny string z parametrami bo nie widzę tego w dokumentacji JS? Poza tym skoro tablica zawiera także metody obiektu Array to nie ważne w jaki sposób będziemy tą zmienna przeglądać, zawsze natrafimy na te niechciane rekordy, tak? czyli gdybyśmy użyli PHP'owej funkcji print_r() na zmiennej 'params' otrzymali byśmy: Kod params => Array( 'p1' => 1, 'p2' => 2, 'text' => 'text', 'remove' => function() { .. }, 'sortDates' => function() { .. } ) tak? to jakiś absurd... (IMG:style_emoticons/default/blinksmiley.gif) Dzięki za odp! (IMG:style_emoticons/default/smile.gif) ps. cojack: hmm, też mi się wydaję że powinno być tak jak u Ciebie, to logiczne, zastanawiam się czy może zmienna 'params' nie jest nadpisywana gdzieś wcześniej w kodzie, szukam... Ten post edytował iwosz 28.01.2011, 13:53:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 15:00 |