Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie zmiennych poprzez java script
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
PcPablo
Mam taki kod java script:

function wyslij(form) {
var dat = document.forma;
if (!kontrola(form))
return false
link=elementyForm('wyslij_piwo.php', form);
window1=window.open(link,'target','toolbar=no,scrollbars=no,directories=no,status=no,menubar=no,resizable=no,wi
th=500,height=500');
clear_message();
wstawcookie(1);
window1.focus();
return false
}

Jest on potrzebny do wysłania zmiennych z formy do pliku wyslij_piwo.php po uprzednim sprawdzenieu poprawności wypęłnienia pól kontrola(form).
Po pierwsze to on nie chce działąć, po drugie to chciałbym żeby scrypt nie otwierał nowego okienka, tylko żeby w tym samym oknie otworzył strone wyslij_piwo.php
e-Gandalf
1) nie dziala poniewaz uzywasz jakis potworkow zamiast standardow.
a) referencje do formularza uzyskujesz przez document.forms['nazwa'].
cool.gif referencje do jego pol przez document.forms['nazwa'].elements['nazwaPola']

Nie wiem co to za funkcja "kontrola" i czy ona istnieje u Ciebie.
Nie wiem co to za funkcja elementyForm i czy ona istnieje u Ciebie
Nie wiem co to za funkcja wstawcookie i czy ona istnieje u Ciebie

2) Zeby nie otwierac nowego okna zamiasy window.open('adres') daj document.location.href="adres";
jareks
Mam na stronie taki kod javasript:
  1. <!--
  2. function displayWindow(url, width, height) {
  3. var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',resizable=0,scrollbars=no,menubar=no' );
  4. }
  5. //-->
  6. </HEAD>
  7.  
  8. <A HREF=javascript:displayWindow('news/komentarze/dodaj.php',470,370)>Dodaj komentarz</A>


Na tej nowej stronie mam formularz do dodawania komentarzy w systemie newsów. Muszę tam przesłać zmienną o wartości zawierającej numer komentowanego newsa. Jak to zrobić?
revyag
Jeśli dobrze zrumiałem chcesz sie odwołać do zmiennej, która znajduje sie w oknie tworzącym okno z którego sie odwołujesz ? smile.gif
No to robisz to tak:
Kod
opener.nazwa_zmiennej
jareks
Opszę to dokładnie, bo moja znajomość javasriptu jest niewielka i nie wiem czy dobrze rozumiem.

Na stronie wyświetlającej newsa mam tak
w ramach <head></head> mam teraz tak:
Kod
<script>
<!--
function displayWindow(url, width, height) {
var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',resizable=0,scrollbars=no,menubar=no' );
var zmienna = <? print($news); ?>;
}
//-->
</SCRIPT>


Czy to jest kompletne?

W ramach <body></body>:
Kod
<A HREF=javascript:displayWindow('news/komentarze/dodaj.php',470,370)>Dodaj komentarz</A>


Czy tyle wystarczy?

zmienna - pobiera z bazy danych informację o numerze komentowanego newsa i ta właśnie informację chcę przesłać do okna (za pomocą javasriptu), w którym mam formularz do dowania komentarza.

Na stronie z formularzem dodającym komentarz (okno tworzone u mnie przez javascript):
Tu podaje niezbędne informacje z formularza do komentowania (autor, e-mail, treść i numer komentowanego newsa), które dalej zapisuje do bazy danych.

Kod
if (isset($wstaw))
{
$autor = mysql_real_escape_string(HTMLSpecialChars($_POST['autor']));
$email = mysql_real_escape_string(HTMLSpecialChars($_POST['email']));
$tresc = mysql_real_escape_string(HTMLSpecialChars($_POST['tresc']));
$newsid = //[b]Co mam tu wpisać?[/b]

//Tu dodaje komentarz do bazy
}


Dane przekazywane z formularza to żaden problem, bo wszystko dzieję się w obrębie tego samego pliku. Jednak numer newsa muszę przekazać tu za pomocą javasriptu ze strony newsa (kliknięcie w link Dodaj komentarz).
revyag
Jeżeli zadeklarujesz zmienną w javascript jako globalną to nie musisz jej przekazywać, bo masz do niej dostęp z okien, które tworzysz z poziomu okna macierzystego w którym masz tą zmienną zadeklarowaną.
Mieszasz javascript i php. Nie wiem czy zadziała to wszystko co sobie wymyślileś, bo trzeba będzie wyskakiwać z php, walnąć skrypt i znowu wrócić. Nie robiłem czegoś takiego.
Ale jeśli to działa to stronie z formularzem musisz napisać po zmienną $newsid przypisać
Kod
opener.zmienna

Być może to zadziałą, ale jeśli to są głupoty to sory:
Kod
<?
if (isset($wstaw))
{
$autor = mysql_real_escape_string(HTMLSpecialChars($_POST['autor']));
$email = mysql_real_escape_string(HTMLSpecialChars($_POST['email']));
$tresc = mysql_real_escape_string(HTMLSpecialChars($_POST['tresc']));
$newsid = ?><script>opener.zmienna</script><?

//Tu dodaje komentarz do bazy
}
?>
jareks
No i to pomieszanie php z javasript stanowi tu chyba problem.

Po wpisaniu tak jak podałeś wywala bład. Próbowałem kombinować inaczej, bez skutku.

Jak to zapisać poprawnie?
  1. $newsid = ?><script>opener.zmienna</script><?


Czy ktoś pomoże?
revyag
Chyba nie da się tego zapisać poprawnie, ponieważ javascript działa po stronie klienta, jest interpretowany przez przeglądarkę użytkownika, a php po stronie serwera, więc takie przekazywanie zmiennych ma małe szanse powodzenia. Najlepiej będzie jak zrobisz to tylko przy użyciu php.
jareks
Ok. Mimo wszystko serdeczne dzięki za chęci.
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.