Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ajax]Proszę o naprowadzenie...
Forum PHP.pl > Forum > XML, AJAX
solarV
Witam.
Jako że z natury jestem uparty i nie lobię prosić o pomoc ciężko mi się pisze tego post'a :/
Przejdźmy do sedna sprawy. Otóż nigdy nie byłem zwolennikiem używania na stronach javascritu i ajax'a. Jednak aby podnieś komfort funkcjonowania pewnego serwisu będę musiał po to sięgnąć, chyba że ktoś zna jakiś fajny sposób na umieszczenie player'a mp3,tak aby nie przeładowywał sie ze strona (nie odświeżający sie div? ;]),(iframe,okienko popup) odpadają.
Wracając do tematu jeśli miałbym tą stronę budować w ajax'e totalnie nie wiem jak się za to zabrać... Proszę o poradę jakich frameworków użyć, bawiłem sie mint/adv-ajaxem, udaje mi się z pola input wywołać skrypt tak żeby przeszukał bazę mp3 bez przeładowywania strony, ale nie mam pojęcia w jaki sposób zabrać się za np takie coś:

Kod
<a href="podglad/mp3/'.$result[2][$i2] . '/'.$result[3][$i2] . '">'.$result[4][$i2].'</a><br />


Będę wdzięczny za jakąkolwiek pomoc.
Z góry dziękuje.
lord_t
Frameworki:
jQuery
MooTools

Sam ajax:
AdvAJAX < tego używałem, raczej nic trudnego:)


Nie wiem czy zrozumiałem o co Ci chodzi z tym <a href...., ale chyba o to żeby dodać linki do zwróconych wyników. Jesli tak to:
1.Masz gdzies na stronie np.
  1. <div id='jakies_id'><div>

2.Strona którą wywołuje ajax generuje potrzebne <a href..></a>
3.(Na przykładzie AdvAJAX:) W onSucces robisz wpisanie tego co zwróciła strona do diva:
  1. document.getElementById('jakies_id').innerHTML = obj.responseText;
solarV
To akurat udało mi się rozkminic. Chodzi o to że np mam już bez przeładowywania zwrócony wynik wyszukiwania, wszystko ładne, umiem to uzyskać jak idzie przez input'a, ale nie mam pojęcia jak skonstruować link i funkcje ajax zeby tez tak to działało.
Nie wiem czy dobrze wytłumaczyłem. Łopatologicznie to cała strona ma działa bez przeładowywania, pojawia mi sie link skonstruowany w ten sposób:
Kod
<a href="szukaj/'.$exp[0].'/1/">'.$exp[0].'</a>

Jak to zrobić? Z czym to się je? Domyślam się ze w href muszę da odnośnik do funkcji js, a więc jak przekazać zmienne?
Jeśli nie macie do mnie siły to odpuście smile.gif
lord_t
SolarV, weź głęboki oddech, zwolnij;) i teraz jeszcze raz napisz (ew. przeedytuj powyższego posta). Co ty chcesz uzyskać. Pisz tak jakbyś tłumaczył idiocie;) Pełnymi zdaniami. To Ci pomożemy;) W tej chwili nie umiem dojrzeć celu.
solarV
Kod
<script language="JavaScript" type="text/javascript" src="advajax.js"></script>

<script language="JavaScript" type="text/javascript">
page = parseInt(document.getElementById("page").value);
advAJAX.get({
   url: "http://localhost/test/page.php?p="+page,
   onSuccess : function(obj) { dodajHTML(obj.responseText);}
});
</script>

</head>
<body>    

# <A href="page.php?p=1">jeden</A> # <A href="page.php?p=2">dwa</A> # <A href="page.php?p=3">trzy</A> # <A href="page.php?p=3&co=dupa">trzy z dupa!!!!</A>
<hr>
<?php

if($_GET['p']==1){
    echo'JEDENJEDENJEDENJEDEN';
}
if($_GET['p']==2){
    echo'DWADWADWADWADWADWA';
}
if($_GET['p']==3){
    echo'TRZY TRZYTRZYTRZYTRZY';
}
if($_GET['p']==3 && $_GET['co']==dupa){
    echo'TRZY TRZYTRZYTRZYTRZY DUPA DUPADUPA';
}
?>
<hr>
<div id="test" style="border:1px; width:200px; height:200px; background-color:red;"></div>


pisane na szybko, funcka advajax z jakiegos forum.
Teraz jak zrobi tak żeby wykonywał się ten skrypt bez przeładowywania strony? Inaczej juz chyba nie umie tego zobrazowac. Nie bijcie :/
lord_t
No to łap wodzu:

plik page.php:
  1. <script language="JavaScript" type="text/javascript" src="advajax.js"></script>
  2.  
  3. <script language="JavaScript" type="text/javascript">
  4. //page = parseInt(document.getElementById("page").value);
  5.  
  6. function zmien(nr)
  7. {
  8. advAJAX.get({
  9. url: "page2.php?p="+nr,//+"&co="+param,
  10. onSuccess : function(obj)
  11. { document.getElementById("tu").innerHTML=obj.responseText;}
  12. });
  13.  
  14. }
  15.  
  16. </head>
  17. <body>
  18.  
  19. # <div onclick='zmien(1)'>jeden</div>
  20. # <div onclick='zmien(2)'>dwa</div>
  21. # <div onclick='zmien(3)'>trzy</div>
  22. <hr>
  23.  
  24. <div id='tu'></div>


plik page2.php
  1. <?php
  2.  if($_GET['p']==1){
  3. echo'JEDENJEDENJEDENJEDEN';
  4. }
  5. if($_GET['p']==2){
  6. echo'DWADWADWADWADWADWA';
  7. }
  8. if($_GET['p']==3){
  9. echo'TRZY TRZYTRZYTRZYTRZY';
  10. }
  11. ?>


Uwagi:
1. Divy nie są w lini tak jak linki, nie są także podkreślone, ale to można rozwiązać stylami css.
2. Przypadku z d(cenzura)ą nie chciało mi się dopisać do funkcji zmien().
Możliwe rozwiązania:
a. Zrobić 2 funkcje => pierwsza z 1 argumentem, druga z dwoma.
b. (zalecana opcja) Zrobić funkcję przyjmującą 2 argumenty, i sprawdzać drugi: jeśli np. jest równy "x" to nie dodajemy go do url w funkcji ajaxa.

Pozdr.
solarV
Wielkie dzięki za pomoc, jestem naprawdę wdzięczny, naprowadziłeś mnie na dobry trop, w gruncie rzeczy chyba zacznę porządnie uczyć się js'a żeby nie zadawać takich idiotycznych pytań~~

Ja zrobiłem to tak:
Kod
<script language="JavaScript" type="text/javascript">
advAJAX.setDefaultParameters({
    timeout : 90000,
    onTimeout : function() { document.getElementById('okienko2').innerHTML = "<b>POLACZENIE PRZEKROCZYLO CZAS</b>"; },
    retry: 9,
    retryDelay: 2000,
    onRetry : function() { document.getElementById('okienko2').innerHTML = "<b>PONAWIANIE POLACZENIA Z BAZA</b>"; },
    onRetryDelay : function() { document.getElementById('okienko2').innerHTML = "<b>OCZEKIWANIE NA NOWE POLACZENIE</b>"; },
    onLoading : function() { document.getElementById('okienko2').innerHTML = "<b>DAJTA CHWILE, PICUJE!!!</b>"; },
    onError : function(obj) { alert("Error: " + obj.status); }
});
function $(id){
return document.getElementById(id);
}
function os(co, ppidPagera){
advAJAX.get({
    url: "akcje.php",
    parameters : {
        "co" : co,
        "ppidPagera" : ppidPagera
    },
    onSuccess : function(obj) { $("okienko2").innerHTML = obj.responseText; },
});
}

function szukaj(){
advAJAX.assign($("szukaj"), {
    onSuccess : function(obj) { $("okienko2").innerHTML = obj.responseText; }}
    );
}
</script>


przykladowa budowa linku:
Kod
'<a title="'.$title.'" href="'.$link.'" onclick="os(\''.$szukane.'\',\''.$page.'\');return false;">'.$text.'</a>'


wszystko na advAJAX, mam nadzieje ze przyda się przyszłym pokoleniom biggrin.gif
ensei
Cytat(lord_t @ 8.04.2008, 00:17:05 ) *
No to łap wodzu:

plik page.php:
  1. <script language="JavaScript" type="text/javascript" src="advajax.js"></script>
  2.  
  3. <script language="JavaScript" type="text/javascript">
  4. //page = parseInt(document.getElementById("page").value);
  5.  
  6. function zmien(nr)
  7. {
  8. advAJAX.get({
  9. url: "page2.php?p="+nr,//+"&co="+param,
  10. onSuccess : function(obj)
  11. { document.getElementById("tu").innerHTML=obj.responseText;}
  12. });
  13.  
  14. }
  15.  
  16. </head>
  17. <body>
  18.  
  19. # <div onclick='zmien(1)'>jeden</div>
  20. # <div onclick='zmien(2)'>dwa</div>
  21. # <div onclick='zmien(3)'>trzy</div>
  22. <hr>
  23.  
  24. <div id='tu'></div>


plik page2.php
  1. <?php
  2. if($_GET['p']==1){
  3. echo'JEDENJEDENJEDENJEDEN';
  4. }
  5. if($_GET['p']==2){
  6. echo'DWADWADWADWADWADWA';
  7. }
  8. if($_GET['p']==3){
  9. echo'TRZY TRZYTRZYTRZYTRZY';
  10. }
  11. ?>


Uwagi:
1. Divy nie są w lini tak jak linki, nie są także podkreślone, ale to można rozwiązać stylami css.
2. Przypadku z d(cenzura)ą nie chciało mi się dopisać do funkcji zmien().
Możliwe rozwiązania:
a. Zrobić 2 funkcje => pierwsza z 1 argumentem, druga z dwoma.
b. (zalecana opcja) Zrobić funkcję przyjmującą 2 argumenty, i sprawdzać drugi: jeśli np. jest równy "x" to nie dodajemy go do url w funkcji ajaxa.

Pozdr.


Witam.
Nie chcę zaczynać nowego tematu, więc piszę tutaj.
Jak zrobić z tego skrypciku, żeby nie musiał odwoływać się do page2.php, tylko do page.php - operowałby ciągle na jednym pliku.
lord_t
  1. <?php
  2. if(isset($_GET['p']) && $_GET['p']!="")
  3. {
  4. if($_GET['p']==1){
  5. echo'JEDENJEDENJEDENJEDEN';
  6. }
  7. if($_GET['p']==2){
  8. echo'DWADWADWADWADWADWA';
  9. }
  10. if($_GET['p']==3){
  11. echo'TRZY TRZYTRZYTRZYTRZY';
  12. }
  13. }
  14. else
  15. {
  16. ?>
  17.  
  18.  
  19. <script language="JavaScript" type="text/javascript" src="advajax.js"></script>
  20.  
  21. <script language="JavaScript" type="text/javascript">
  22. //page = parseInt(document.getElementById("page").value);
  23.  
  24. function zmien(nr)
  25. {
  26. advAJAX.get({
  27. url: "page2.php?p="+nr,//+"&co="+param,
  28. onSuccess : function(obj)
  29. { document.getElementById("tu").innerHTML=obj.responseText;}
  30. });
  31.  
  32. }
  33. </script>
  34.  
  35. </head>
  36. <body>
  37.  
  38. # <div onclick='zmien(1)'>jeden</div>
  39. # <div onclick='zmien(2)'>dwa</div>
  40. # <div onclick='zmien(3)'>trzy</div>
  41. <hr>
  42.  
  43. <div id='tu'></div>
  44.  
  45. <? }//else ?>


Komentarz:
1.Powinno zadziałać bez tych brakujących tagów (<html> itp.), ale proponuję dodać;)
2.Pisane z palca.
ensei
Piękne dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.