Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [advAjax + JSON] Jak przekazać wiele parametrów z jakiegoś obiektu?
xamil
post
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


I znowu mam lamerskie pytanie:/

Mamy taki o to kod (WIKI):
Kod
advAJAX.get({
    url: "http://www.example.com/page.html",
    parameters : {
      "var1" : "value1",
      "var2" : "value2"
    },
    onSuccess : function(obj) { alert(obj.responseText); },
    onError : function(obj) { alert("Error: " + obj.status); },
    "var3" : "value3"
});
Wszystko fajnie ale jak przed wysłaniem request'a odczytać jakieś x parametrów i przekazać je do requesta?
Przypuszczam, że pomocne będzie tu zdażenie onInitialization w którym mógłbym coś takiego zrobić ale nie wiem jak w nim przekazać jakieś parametry które pójdą razem z requestem. Czyli jak przekazać coś jak "parameters" z przykładu w trakcie zdażenia onInitialization do requesta?


Nikt nie ma pomysłu? To w sumie jest bardzo ważna i przydatna funkcjonalność. Nie da się czegoś takiego zrobić?

Ten post edytował xamil 9.08.2006, 07:39:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Upchnij to w funkcję a potem ją wywołaj.

Na przykład:
Kod
function editLabel( strMode, intLabelId )
{
    advAJAX.get({
        url: "?module=Labels&action=EditLabel",
        "strMode" : strMode,
        "labelId" : intLabelId,
        onSuccess : function( obj )
                    {
                       document.getElementById( 'contentContainer' ).innerHTML = obj.responseText;
                    },
        onError : function( obj )
                  {
                      document.getElementById( 'contentContainer' ).innerHTML = 'Nie udało się wczytać danych.';
                  }
    });

    return false;
}
Go to the top of the page
+Quote Post
xamil
post
Post #3





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Dzięki bardzo za odzew ale nie bardzo rozumiem jak to ma pomóc. Bo ja np. nie wiem czy to będzie jeden parametr czy 10. Może innaczej bo w sumie to nie wiem jak się wysłowić z tym co chce zrobić;)
Czasem kod ma odzwierciedlać coś takiego:
Kod
advAJAX.get({
    url: "http://www.example.com/page.html",
    parameters : {
      "var1" : "value1",
      "var2" : "value2"
    },
    onSuccess : function(obj) { alert(obj.responseText); },
});
A czasem coś takiego:
Kod
advAJAX.get({
    url: "http://www.example.com/page.html",
    parameters : {
      "var1" : "value1",
      "var2" : "value2"
      "var3" : "value3"
      "var4" : "value4"
      "var5" : "value5"
      "var6" : "value6"
    },
    onSuccess : function(obj) { alert(obj.responseText); },
});
Czyli liczba parametrów jest zmienna bo np. pobieram je z jakiejś tablicy. Po prostu nie wiem jak np. łączyć jakieś bloki JSON. Czyli czy jest np. możliwość stworzenia czegoś w tym stylu:
Kod
var json=''
for(i=0; i<tablica.length;i++) {
    json=json+'{\"var'+i+'\" : \"'+tablica[i]+'\"}'
}
advAJAX.get({
    url: "http://www.example.com/page.html",
    parameters : {
+json+
    },
    onSuccess : function(obj) { alert(obj.responseText); },
});
Wiem, wiem herezja ale moze oddałem idee;)

W teorii jeśli by to była czysto tablica to mógłbym odpowiednio link spreparować i taki link wkleić do requesta advAjax ale wydaj mie się to nie ładnym rozwiązaniem.
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Ku kurcze, jak nie wiesz ile będzie elementów to nie rób ich list bardzo długiej, tylko sobie tablice prześlij.
Go to the top of the page
+Quote Post
xamil
post
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Ok to teraz już całkiem głupie pytanie. Jak przesłać tablice?(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Spróbowałem czegoś takiego:
Kod
zenek=new Array('aa','bb','cc')
advAJAX.post({
    url: "http://www.example.com/page.html",
    parameters : {
      "zenek" : zenek
    },
    onSuccess : function(obj) { alert(obj.responseText); },
});

Wtyczka do ff - firebug - pokazała mi ze postem zostało posłane coś takiego:
Kod
zenek=aa&zenek=bb&zenek=cc
No i niestety w $_REQUEST php słusznie się pojawiło, coś takiego
Kod
["zenek"]=>  string(2) "cc"
Czyli po prostu przypisał tablicy zenek tylko ostatnią warstość w ciągu bo jak już coś to powinno być
Kod
zenek[]=aa&zenek[]=bb&zenek[]=cc

Czyli ponawiam pyatnie. Jak przesłać tablicę?

Poza tym o ile na tą chwile ewentualne posłanie tablicy wchodzi w grę o tyle fakt posłania różnej ilości nie znanych w momencie definiowania parametrów napewno też może być potrzebna. Czyli nie, że sobie wrzuce do jednej tablicy wszystkie parametry i wyciągając z REQUEST będę musiał je najpierw wyciągnąć z tej tablicy tylko, ze te parametry będą dostępne bezpośrednio w $_REQUEST


Dobra ostatni raz się przypominam o mojej sprawie;) Czy ktoś może mi powiedzieć czy da się coś takiego zrobić czy się nie da? Nie da się to ok ale niech ktoś to powie bo tak to będę w nieskończoność szukał i się zastanawiał(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


AdvancedAJAX 1.1.2 - AJAX + JSON
Cytat
(...) pozwala na korzystanie z serializacji JSON na zmiennych każdego typu, dostępnych w JavaScript, wliczając tablice (array) i obiekty (object) (...)
Go to the top of the page
+Quote Post
xamil
post
Post #7





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Cytat
["c"]=>
string(7) "[3,2,1]"
["d"]=>
string(22) "{"d1":4,"d2":5,"d3":6}"
Nie rozumiem tego. Może źle myślę ale przecież nadal nie otrzymuję w php tablicy? Jak źle myślę to czy może mi ktoś to łopatologicznie objaśnić?

--

Może jeszcze innaczej. Mam funkcję ogólną wykonującą zapytania:
  1. <?php
  2. function ajaxGo(act,parameters) {
  3. advAJAX.post({"act":act})
  4. }
  5. ?>

Pozostałe rzeczy mam ustawione przez metodę advAJAX.setDefaultParameters dzięki czemu nie muszę 30 razy pisać tego samego. Są jednak zapytania które wymagają np. jakiejś dodatkowej operacji po wykonaniu zapytania. Stąd zmienna parameters. Chciałbym moć w niej podać jako JSON inne parametry np. całą funkcję OnSuccess.
Kod
onSuccess : function(obj) { alert('działa'); }


No i jak to przekazać do wywołania advAJAX.post z pierwszego przykładu?
Go to the top of the page
+Quote Post
060156
post
Post #8





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Columbus Georgia

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


Cytat(xamil @ 10.08.2006, 06:47:29 ) *
Dzięki bardzo za odzew ale nie bardzo rozumiem jak to ma pomóc. Bo ja np. nie wiem czy to będzie jeden parametr czy 10. Może innaczej bo w sumie to nie wiem jak się wysłowić z tym co chce zrobić;)
Czasem kod ma odzwierciedlać coś takiego:
Kod
advAJAX.get({
    url: "http://www.example.com/page.html",
    parameters : {
      "var1" : "value1",
      "var2" : "value2"
    },
    onSuccess : function(obj) { alert(obj.responseText); },
});
A czasem coś takiego:
Kod
advAJAX.get({
    url: "http://www.example.com/page.html",
    parameters : {
      "var1" : "value1",
      "var2" : "value2"
      "var3" : "value3"
      "var4" : "value4"
      "var5" : "value5"
      "var6" : "value6"
    },
    onSuccess : function(obj) { alert(obj.responseText); },
});
Czyli liczba parametrów jest zmienna bo np. pobieram je z jakiejś tablicy. Po prostu nie wiem jak np. łączyć jakieś bloki JSON. Czyli czy jest np. możliwość stworzenia czegoś w tym stylu:
Kod
var json=''
for(i=0; i<tablica.length;i++) {
    json=json+'{\"var'+i+'\" : \"'+tablica[i]+'\"}'
}
advAJAX.get({
    url: "http://www.example.com/page.html",
    parameters : {
+json+
    },
    onSuccess : function(obj) { alert(obj.responseText); },
});
Wiem, wiem herezja ale moze oddałem idee;)

W teorii jeśli by to była czysto tablica to mógłbym odpowiednio link spreparować i taki link wkleić do requesta advAjax ale wydaj mie się to nie ładnym rozwiązaniem.

No wlasnie to jest problem z podjeciem prototype, ktory w takich sytuacjach zawodzi i komplikuje
rozwiazanie ....
Juz dawno zrezygnowalem z tego podjecia, bo przy bardziej zlozonych objektach sa tylko problemy ..
Go to the top of the page
+Quote Post
xamil
post
Post #9





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Dobra ja niestety nie jestem zbyt dobry w te klocki więc za bardzo nie wiem o co chodzi. Jedyne co potrzebuje to dwie odpowiedzi

1. Czy da sie tak zrobić a jak się da to jak?
2. Jeśli się nie da to co zrobic aby się dało (albo jak obejść problem)?

p.s. Dzięk za odzew... temat moze juz stary ale dalej nie mam rozwiązania i robię to baaardzo na około.

Ten post edytował xamil 12.09.2006, 07:03:12
Go to the top of the page
+Quote Post

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: 25.08.2025 - 04:25