Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Odświeżanie div zamiast iframe
Malinaa
post 20.07.2010, 21:23:27
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 6
Dołączył: 21.07.2008

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


Witam,
sie macie winksmiley.jpg

Chciałbym rozwiązać taki problem:

mam na stronie iframe w którym jest sonda i wszystko byłoby ok, tylko no właśnie sonada jest w iframe.

Jak zrobić div'a, który będzie działał jak iframe, będzie się odświeżał bez przeładowania całej strony (po kliknięciu submit).

IFRAME: <iframe src="elementy/sonda/sonda.php" width="170" height="200" scrolling="no" frameborder="0"></iframe>

DIV: <div id="div_iframe"><div> questionmark.gif?

Gdyby nie możliwość głosowania odświeżane div (iframe) nie byłoby potrzebne, wystarczyłoby tylko include("elementy/sonda/sonda.php");
wewnątrz div'a, ale można, ba nawet trzeba głosować i dlatego musi być odświeżany div (iframe działa, ale nie spełnia oczekiwań).

Kłopotliwe szczegóły na które trzeba zwrócić uwagę:

w pliku sonda.php znajduję się przycisk formularza <input type="submit"> i właśnie w tym cały problem, aby po wybraniu opcji głosowania w sondzie i kliknięciu input SUBMIT (Głosuj) przeładował się tylko sam DIV, w którym powinna być sonda, a nie cała strona.

Jak to zrobić, bardzo proszę o pomoc.


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
ces
post 21.07.2010, 06:44:17
Post #2





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.07.2010

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


piszesz w dziale ajax a w podanym przykladzie nie wykorzystales ajaxa a zamiast iframe mozesz np tak

$.ajax({
url: 'elementy/sonda/sonda.php',
success: function(data) {
$('.nazwa_diva').html(data);
}
});

przy uzyciu jquery
Go to the top of the page
+Quote Post
Malinaa
post 22.07.2010, 20:17:28
Post #3





Grupa: Zarejestrowani
Postów: 544
Pomógł: 6
Dołączył: 21.07.2008

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


Witam,
ajax, jquery znam tyle o ile, ale myślę że w ajax'ie można to zrobić, dla tego piszę tutaj.

Wpisałem coś takiego j.w. w kod strony z nadzieją że zadziała,

<script type="text/javascript">
$.ajax ({
url: 'elementy/sonda/sonda.php',
success: function(data) {
$('.nazwa_diva').html(data);
}
});
</script>

nie działa, albo nie wiem jak zastosować?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
chomiczek
post 23.07.2010, 12:31:26
Post #4





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


@Malina musisz zaimplementować bibliotekę jquery wcześniej, oraz oczywiście przeedytować linijkę url.
jeżeli Twój div ma jakieś ID to powinno to wyglądać tak:
Kod
$('#nazwa_diva').html(data);


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
Malinaa
post 4.08.2010, 21:22:05
Post #5





Grupa: Zarejestrowani
Postów: 544
Pomógł: 6
Dołączył: 21.07.2008

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


Sorry, I don't understand?

Można jaśniej,
jak zrobić takie odświeżanie w divie na stronie zamiast iframe?

Czy ktoś wie więcej?

Nie znalazłem informacji jak zrobić takie odświeżanie (js, ajax, jquery) questionmark.gif?

Może nie opisałem problemu jak trzeba?

Jest taka strona , na której jest sonda (na podstawie sondaży).
Ta sonda jest w iframe src="elementy/sonda/sonda.php", chciałbym aby zrobić ją w divie (src=?).
Tak, aby po kliknięciu w button (głosuj) nie otwierało (odświeżało) całej strony, tylko boksa z sondą.

Iframe dziła tutaj jak trzeba, tyle tylko że jest to iframe, a chciałbym taki oświeżany div.

Inna rzecz, którą chciałbym w ten sposób rozwiązać:
W iframe szerokość i wysokość jest stała, może w ten sposób wysokość boxa zmieniałby się zależnie od zawartości po odświeżeniu diva.

Jeśli ktoś byłby tak miły.
Dziękuje za pomoc.

Mam coś takiego

  1. <script type="text/javascript" language="JavaScript">
  2. <!--
  3. var object = false;
  4.  
  5. if (window.XMLHttpRequest) object = new XMLHttpRequest();
  6. else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");
  7.  
  8. function getData(dataSource, divID) {
  9. object.onreadystatechange = function() {
  10. if (object.readyState == 4) document.getElementById(divID).innerHTML=object.responseText;
  11. }
  12. object.open("GET",dataSource,true);
  13. object.send(null);
  14. }
  15.  
  16. function odswiez() {
  17. getData('test_v3.php?ile=1','idSonda');
  18. }
  19. // -->


  1. <input type="submit" onclick="odswiez()" value="Odśwież">
  2. <div id="idSonda"></div>
  3. <script language="javascript">
  4. <!--
  5. odswiez();
  6. // -->


Div w jakiś sposób jest odświeżany jeśli w funkcji odswiez() nazwa pliku test_v3.php jest nie prawidłowa (tzn. kiedy plik nie istnieje).
Jeśli podam prawodłową ścieżkę i nazwę pliku nie odświeża.

Co jest tutaj nie tak?

I jak zrobić, aby <input type="submit" onclick="odswiez()" value="Odśwież"> znajdował się w pliku test_v3.php wewnątrz diva?

Tak, aby w kodzie html bylo tylko <div id="idSonda">Zawartość strony test_v3.php</div> po kliknięciu w test_v3.php przycisku <input> odświeżyło sondę.

Nie wiem jak to napisać, ba nie wiem jak pytać.

Zapytam wprost. Czy jest tu jakiś mądrala?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
chomiczek
post 5.08.2010, 14:04:00
Post #6





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


na początku strony podłącz sobie bibliotekę jQuery.. możesz to zrobić tak, dodając 2 poniższe linijki w sekcji head:

Kod
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.4.2");</script>


a następnie masz taki kod:
Kod
<script type="text/javascript">
function odswiez() {
  $("#idSonda").load("elementy/sonda/sonda.php"); //spowoduje wpisanie zawartości pliku z podanej lokalizacji do div idSonda
}
</script>
<div id="idSonda"></div>
<script>
  $("#idSonda").load("elementy/sonda/sonda.php");
</script>
<input type="submit" onclick="odswiez()" value="Odśwież">


czasem może się okazać, że jednak load() z funkcji odswiez() nie działa tak jak powinnien to ja wtedy używam $.ajax
Kod
$.ajax({
        type: "POST",
        url: "elementy/sonda/sonda.php"
        success: function(msg){
            $("#idSonda").html(msg); //spowoduje wpisanie do diva zwróconej zawartości pliku
        }
     });
    });


pisane z palca więc jakieś drobne błędy mogą być.

EDT: zmieniłby jeszcze onclick z subimit, z uwagi na to, że trzeba wyłączyć normalną akcję (submit).. onclick możesz podpiąć do czegokolwiek..

Ten post edytował chomiczek 5.08.2010, 14:05:31


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
Malinaa
post 6.08.2010, 22:02:37
Post #7





Grupa: Zarejestrowani
Postów: 544
Pomógł: 6
Dołączył: 21.07.2008

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


Na ten czas, jest tak

  1. <script type="text/javascript">
  2. function odswiez() {
  3. $.ajax ({
  4. type: "POST",
  5. url: "elementy/sonda/sonda.php",
  6. success: function(data) {
  7. $("#idSonda").html(data);
  8. }
  9. });
  10.  
  11. //$("#idSonda").load("elementy/sonda/sonda.php");
  12.  
  13. document.formSonda.submit(); // Co Tutaj questionmark.gif
  14. }
  15.  
  16. <div id="idSonda"></div>
  17. $("#idSonda").load("elementy/sonda/sonda.php");


W pliku sonda.php umieściłem input type button zamiast submit. Czy o tym pisałeś, aby zmienić?

sonda.php
<form action="$_SERVER['PHP_SELF']" method="post" name="formSonda">
<input type="button" value="Odśwież" onclick="odswiez()">
</form>

Uwagi: Ścieżka do pliku: elementy/sonda/sonda.php . Sonda wyświetlana jest na stronie index.php .

Problem: co dodać w funkcji odswiez() lub gdzie indziej, aby po kliknięciu button Odśwież, który jest w pliku sonda.php wyświetlanym w divie na stronie index.php prezkazywane były niezbędne zmienne dla sondy.

W funkcji dodałem: document.formSonda.submit(); ale po kliknięciu zamiast być na stronie index.php wędruję do boxa sonda.php
jeżeli natomiast w formularzu dam w action index.php nie zlicza głosów w box'ie sondy.

Inna rzecz. Myślałem, że ten kod w ogóle nie działa, ponieważ testowałem w Internet Explorer, ale spróbowałem w FireFoxie i tutaj działa.
Czy ten kod jest uniwersalny i może działać na Internet Explorer również, ponieważ u mnie na tej przeglądarce nie działa prawidłowo, coś fiksuje i po sondzie echo?

--
Uruchomiłem skrypt dzisiaj i sonda pokazała się również w Internet Explorer, gdzie wczoraj było echo czyli nic w divie.
Wygląda tutaj że w IE też działa tylko IE zapamiętuje pierwszą zawartość diva i nie wyświetla zmieniających się losowo sond w sondażach.

Mam już prawie gotowe sondaże, skrypt sonda.php generuje losowo jedną z sond i potrzebuję Waszej pomocy, aby ukończyć sondę w divie.
W divie wyświetlana powinna być losowa sonda i FireFox działa bez kłopotu, ale w IE jest widoczna cały czas jedna pierwsza sonda?

Pojawił się kłopot z polskimi znakami w divie obsługiwanym przez powyższy kod.
Można temu jakoś zaradzić?

I wspomniany button Głosuj (na obrazku) co zrobić, aby zliczane były głosy i aby działał w divie ?
Button jest w formularzu sondy - plik sonda.php, a plik sonda.php wyświetlany jest w divie na stronie index.php .


--
Zrobiłem sondę na gotowe, działa jak trzeba div zamiast iframe.
Po prostu extra, jestem niemożliwy, dzięki chomiczek smile.gif

Zlicza głosy, bez kłopotu, zabezpieczenie przed nabijeniem glosów też działa i polskie znaki są.
Zastanawiam się jeszcze nad przeglądarką IE, dlaczego nie pokazuje losowych sond tylko jedną sondę, kiedy inne przeglądarki nie mają oporów?

Dla tych, którzy szukają rozwiązanie jest tutaj:

  1. <script type='text/javascript'>
  2. function odswiez() {
  3. var sonda = document.formSonda.form_kid.value;
  4. var glos = 0;
  5.  
  6. for (i=0; i < document.formSonda.glos.length; i++) {
  7. if ( document.formSonda.glos[i].checked == true )
  8. glos = document.formSonda.glos[i].value;
  9. }
  10.  
  11. //if (sonda != '') alert('Sonda, ' + sonda + '!');
  12. //if (glos != '') alert('Głos, ' + glos + '!');
  13.  
  14. $.ajax ({
  15. type: 'POST',
  16. url: 'sonda.php?form_kid='+sonda+'&glos='+glos,
  17. success: function(data) {
  18. $('#idSonda').html(data);
  19. }
  20. });
  21.  
  22. // $('#idSonda').load('sonda.php');
  23. }
  24. </script>


Kind Regards

Ten post edytował Malinaa 7.08.2010, 13:02:06


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
chomiczek
post 7.08.2010, 15:01:30
Post #8





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


taka mała uwaga, jeżeli masz załączone jquery (a masz) to zamień
document.formSonda.form_kid.value

na $('#formSonda).value() i podobnie w pozostałych przypadkach.

co do użycia buttona to nie dokładnie o to mi chodziło raczej o coś typu:
Kod
<img src="jakisObraz.jpg" alt="" id="idB" onclick="odswiez();" />


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
Malinaa
post 7.08.2010, 17:41:04
Post #9





Grupa: Zarejestrowani
Postów: 544
Pomógł: 6
Dołączył: 21.07.2008

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


Nie wiem o co chodzi, ale próbowałem zamienić

zamieniłem: var sonda = document.formSonda.form_kid.value;
na: var sonda = $('#formSonda').val('form_kid');
i tak nie działa?

zamiast: <input type="button" value=".$sonda_glosuj." class="inputSonda" onclick="odswiez()">
dałem: <img src="grafika/button_green_60x22.gif" alt="" id="idSondaButton" onclick="odswiez();" onMouseOver="idSondaButton.src='grafika/button_orange_60x22.gif'" onMouseOut="idSondaButton.src='grafika/button_green_60x22.gif'">
ale img w ogóle mi tutaj nie pasuje.
Strona, którą piszę jest wielojęzyczna dla img musiałbym zrobić obrazki z napisami (Głosuj, Vote itd. tylko po co. Input zmienia też kolor po najechaniu myszką, a tutaj musiałem dodać onMouseOver, onMouseOut).
W input value mam słowo w jakim chcę języku, a w img. Jak to zrobić lepiej?

Można więcej szczegółów o co chodzi?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
chomiczek
post 8.08.2010, 21:25:17
Post #10





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Cytat(Malinaa @ 7.08.2010, 16:41:04 ) *
var sonda = $('#formSonda').val('form_kid');


poczytaj tutaj: http://api.jquery.com/val/

powinno być: var sonda = $('#form_kid').val();

Cytat(Malinaa @ 7.08.2010, 16:41:04 ) *
zamiast: <input type="button" value=".$sonda_glosuj." class="inputSonda" onclick="odswiez()">
dałem: <img src="grafika/button_green_60x22.gif" alt="" id="idSondaButton" onclick="odswiez();" onMouseOver="idSondaButton.src='grafika/button_orange_60x22.gif'" onMouseOut="idSondaButton.src='grafika/button_green_60x22.gif'">
ale img w ogóle mi tutaj nie pasuje.
Strona, którą piszę jest wielojęzyczna dla img musiałbym zrobić obrazki z napisami (Głosuj, Vote itd. tylko po co. Input zmienia też kolor po najechaniu myszką, a tutaj musiałem dodać onMouseOver, onMouseOut).
W input value mam słowo w jakim chcę języku, a w img. Jak to zrobić lepiej?

poczytaj odnośnie click albo submit
jeden z pierwszych przykładów odnośnie subimita, rozwiązuje Twój problem.


--------------------
created by chomiczek
Go to the top of the page
+Quote Post
Malinaa
post 9.08.2010, 08:57:29
Post #11





Grupa: Zarejestrowani
Postów: 544
Pomógł: 6
Dołączył: 21.07.2008

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


Funkcja odswiez() teraz wygląda całkiem pięknie, bez petli i działa znakomicie

  1. <script type="text/javascript">
  2. function odswiez() {
  3. var sonda = $('#form_kid').val();
  4. var glos = $('input:radio[name=glos]:checked').val();
  5.  
  6. $.ajax ({
  7. type: 'POST',
  8. url: 'elementy/sonda/sonda.php?form_kid='+sonda+'&glos='+glos,
  9. success: function(data) {
  10. $('#idSonda').html(data);
  11. }
  12. });
  13. }


ale z input to się całkiem zakręciłem:

  1. <form action="destination.html" id="formSonda" method="post">
  2. <input type="button" value=".$sonda_text_submit." class="inputSonda" onclick="odswiez()">
  3. <div id="other">Trigger the handler</div>
  4. </form>
  5.  
  6. <script type="text/javascript">
  7. $('#formSonda').submit(function() {
  8. alert('Handler for .submit() called.');
  9. return false;
  10. });
  11.  
  12. $('#other').click(function() {
  13. $('#target').submit();
  14. });


Po co takie kombinacje jeśli input zostaje jak był, w jaki sposób rozwiązać mój problem?


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 13.06.2024 - 10:34