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
everth
post
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Cytat
tak? to jakiś absurd...

To jest normalne zachowanie - tablica w JS nie przechowuje pary klucz=>wartość, tylko same wartości (z liczbą porządkową jako kluczem), gdy ty próbujesz coś takiego
[JAVASCRIPT] pobierz, plaintext
  1. params = new Array();
  2. params.push('hihi');
  3. params.push('hehe');
  4. // Co jest równoznaczne z:
  5. params = ['hihi,'hehe'];
[JAVASCRIPT] pobierz, plaintext

to masz tablicę. Gdy robisz tak:
[JAVASCRIPT] pobierz, plaintext
  1. params['to'] = 'hihi';
  2. params['tamto'] = 'hehe'
  3. // Co jest równoznaczne z:
  4. params = {'to':'hihi','tamto':'hehe'};
[JAVASCRIPT] pobierz, plaintext

To już nie przyporządkowujesz wartości w tablicy, tylko właściwości obiektu typu Array. A to już zupełnie inna rzecz. Pętla for () in () działa tutaj dlatego że przechodzi przez wszystkie metody i właściwości w obiekcie (bez znaczenia na klasę). Sprawdź sobie wartość length tej tablicy - powinieneś zrozumieć.

A dalej nie rozumiem dlaczego dostajesz dodatkowe metody - pewnie dopisujesz je gdzieś wcześniej, albo to pochodna jakiegoś FW.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 2.10.2025 - 15:49