Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wywołanie strony w tle.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
bww
Witam,

proszę o pomoc. Jakiej funkcji mogę użyć zamiast location.href, aby strona test.php z parametrem Result (jak poniżej) została wywołana w tle?

Kod
<script language="JavaScript">
var Result = 55;
location.href="test.php?Result=" + Result;
</script>


Dodatkowo, czy jest możliwość, aby nie czekać na odpowiedź? Przykładowo strona test.php zawiera
  1. instrukcje;
  2. sleep(10);
  3. instrukcje;

Generalnie chodzi mi o to, żeby użytkownik nie czuł, że w tle wywoływana jest jakaś inna strona.
kamil4u
A po co Ci takie coś? Pytam, bo na razie nie wiem dokładnie o co chodzi i w różnych przypadkach możliwe są różne rozwiązania( lub raczej ich brak ). Masz dostęp do strony( czy możesz ją edytować ): test.php ?
Sephirus
Sposobów jest masa ale tak jak przedmówca napisał - do czego Ci to?

Możesz:
1. użyć AJAX
2. użyć coś na styl JSONP
3. użyć IFRAME
4. użyć obrazek
5. .... można wymieniać w nieskończoność... smile.gif

Najprościej chyba poprzez IFRAME

  1. <iframe id="strona_w_tle" style="display:none"></iframe>
  2.  
  3. <script type="text/javascript">
  4. document.getElementById('strona_w_tle').src = 'test.php?result=' + Result;


itd...
bww
Generalnie efekt ma być podobny do statystyk tzn. ze strony A, gdzie będzie JS mają być wysyłane odpowiednie dane (w moim przykładzie jest to zmienna Result) do strony test.php, która znajduje się na innym serwerze. Zakładmy, że strona A może nie obsługiwać PHP, nie chcemy w żadnen sposób ingerować w jej treść i wygląd (chodzi o to co widzi użytkownik końcowy). Test.php + wszystko co jest na tym serwerze mogę w pełni edytować.

IFRAME chciałem użyć dopiero w znaczniku <noscript></noscript>. Twój przykład wydaje się być tym co chcę osiągnąć, ale przy ramkach chyba nie da się uniknąć oczekiwania na odpowiedź. Chyba, że przy innych opcjach też...
Sephirus
Jeśli przesyłasz mało danych do wystarczy użyć coś w rodzaju JSONP:

Na stronie którą chcesz śledzić poprzez JS musisz wykonać skrypt typu:

[JAVASCRIPT] pobierz, plaintext
  1. // po załadowaniu:
  2. var s = document.createElement('script');
  3. s.type = 'text/javascript';
  4. document.getElementsByTagName('head')[0].appendChild(s);
  5.  
  6.  
  7. // później przy każdym wysyłaniu danych do strony test.php:
  8.  
  9. s.src = 'http://twoja-domena.pl/test.php?result='+Result+'&r='+Math.random();
[JAVASCRIPT] pobierz, plaintext


W ten sposób odwołasz się niby do skryptu JS przesyłając dane GETEM do konkretnego skryptu (test.php).

Ten skrypt JS może dodatkowo odpowiadać na żądania w ten sposób:

[JAVASCRIPT] pobierz, plaintext
  1. twoja_funkcja();
[JAVASCRIPT] pobierz, plaintext


gdzie twoja_funkcja to funkcja istniejąca po stronie strony A. Chodzi o to byś po stronie strony A wiedział, że dane zostały przyjęte. smile.gif

Pomyśl nad tym wink.gif
bww
W sumie strona A nie potrzebuje widzieć, czy test.php odebrał dane.
Dzięki za 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.