Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][AJAX][PHP] otwieranie nowego okna
Forum PHP.pl > Forum > Przedszkole
max_mcee
Witam

Korzystam z kodu AJAX który odświeża mi dany element strony z pliku dane.php
i w pliku dane.php posiadam kod:

  1. if(mysql_num_rows($wynik) != 0) {
  2. echo "ok";
  3. echo "<script type='text/javascript'>window.open('http://www.strona.pl', 'okno').focus();</script>";
  4. }


Problem tkwi w tym, że komunikat się wyświetla natomiast okno się nie otwiera, a zależy mi na tym, żeby otwierało się automatycznie.
Jak można by to zrobić ?

Pomoże ktoś ?
d3ut3r
Zrób tak, że dane.php wyśle tylko "OK" a tam gdzie robisz zapytanie do pliku dane.php zrób warunek:

[JAVASCRIPT] pobierz, plaintext
  1. if (response=="OK"){
  2.  
  3. //tutaj otwierasz okienko
  4.  
  5. }
[JAVASCRIPT] pobierz, plaintext
max_mcee
A w jaki sposób je wysłać z pliku dane.php??

Proszę o zamknięcie, opiszę w drugim temacie dokładnie
d3ut3r

Javascript mógłby wyglądać np tak:

[JAVASCRIPT] pobierz, plaintext
  1. $.post("dane.php",
  2. function(data){
  3. if (data.status=="OK"){
  4. window.open (data.url,"mywindow");
  5. }
  6. }, "json");
[JAVASCRIPT] pobierz, plaintext


a plik dane.php

  1.  
  2. if(mysql_num_rows($wynik) != 0) {
  3.  
  4. echo json_encode(array("status"=>"OK","url"=>"http://forum.php.pl"));
  5.  
  6. }
  7.  


Kod JS zakłada korzystanie z jQuery, nie testowane ale powinno być ok smile.gif
max_mcee
Pokaże dokładnie jak wygląda cały kod:

  1. <script language=javascript>
  2. // tworzymy zmienna
  3. var object = false;
  4.  
  5. // tworzymy obiekt XMLHttpRequest (dla IE jest troche inaczej, stad funkcja warunkowa)
  6. if (window.XMLHttpRequest) object = new XMLHttpRequest();
  7. else if (window.ActiveXObject) object = new ActiveXObject("Microsoft.XMLHTTP");
  8.  
  9. // ponizsza funkcja pobiera dane ze wskazanego zrodla (pliku lub skryptu php) do wskazanego
  10. // DIVa poprzez obiekt XMLHttpRequest
  11. function getData(dataSource, divID)
  12. {
  13. // kontynuuje wylacznie gdy obiekt nie jest zajety
  14. if (object.readyState==4 || object.readyState==0)
  15. {
  16. // tworzy zmienna odpowiadajaca konkretnemu obiektowi na stronie
  17. var obj = document.getElementById(divID);
  18.  
  19. // czyta z pliku lub wykonuje skrypt
  20. object.open("GET", dataSource);
  21.  
  22. // definiuje metode obslugi odpowiedzi serwera
  23. object.onreadystatechange = function()
  24. {
  25. // kontynuuje jesli transmisja zostala zakonczona powodzeniem
  26. if (object.readyState == 4 && object.status == 200)
  27. obj.innerHTML= object.responseText;
  28. }
  29. // wysyla zadanie do serwera
  30. object.send(null);
  31. }
  32. }
  33.  
  34. // w ponizszej funkcji wywolujemy funkcje getData z odpowiednimi parametrami
  35. // oraz wywolujemy ja sama rekurencyjnie po co okreslony czas (w naszym wypadku 1000 ms)
  36. function odswiezaj()
  37. {
  38. getData('dane.php','dane');
  39. setTimeout("odswiezaj()", 10000);
  40.  
  41. }
  42.  
  43. </head>
  44. <div id="dane">
  45. </div>
  46. <script language=javascript>
  47. odswiezaj();
  48. </body>


Natomiast plik dane.php wyglądają następująco:
  1. <?php
  2. if(mysql_num_rows($wynik) != 0) {
  3. echo "ok";
  4. echo "<script type='text/javascript'>window.open('http://strona.pl', 'nazwa').focus();</script>";
  5.  
  6. }
  7. ?>


Proszę o pomoc.
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.