Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] przekazywanie tablicy jako parametr funkcji, przekazywane nieporzadane dane
iwosz
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
melkorm
post
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
Go to the top of the page
+Quote Post
iwosz
post
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Cytat(melkorm @ 28.01.2011, 13:36:10 ) *
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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 15:00