Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript][PHP]Przesyłanie zmiennej JS do PHP
Forum PHP.pl > Forum > Przedszkole
-mac-
Witam, od dwóch dni męczę się z tym problemem - przesyłanie zmienej z js do php.
Próbowałem wiekszość podawanych w googlach metod - nic nie działa, ciągle mam pustą tablice wypisywanych wyników. dobra oto kod:
Javascript
  1. var geocoder;
  2. var map;
  3. function initialize() {
  4. geocoder = new google.maps.Geocoder();
  5. var latlng = new google.maps.LatLng(52.243240, 21.030295);
  6. var mapOptions = {
  7. zoom: 8,
  8. center: latlng
  9. }
  10. map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
  11. }
  12.  
  13.  
  14.  
  15.  
  16. function codeAddress() {
  17. var address = document.getElementById('address').value;
  18. geocoder.geocode({ 'address': address}, function(results, status) {
  19. if (status == google.maps.GeocoderStatus.OK) {
  20. map.setCenter(results[0].geometry.location);
  21. var marker = new google.maps.Marker({
  22. map: map,
  23. position: results[0].geometry.location
  24.  
  25. });
  26.  
  27.  
  28. var input = results[0].geometry.location;
  29.  
  30. document.getElementById("wypisz").innerHTML=input.lat();
  31. document.getElementById("wypisz2").innerHTML=input.lng();
  32. //console.log(lat);
  33.  
  34. /*var lat = input.lat();
  35. var longitude = input.lng();
  36.  
  37. request.open("GET", "przetworzkomentarz_v2.php?lat=" + lat, true);
  38.  
  39. //var url = "przetworzkomentarz_v2.php?lat=latitude&lng =longitude";
  40.  
  41.  
  42. //document.getElementById("wypisz").innerHTML = results[0].geometry.location.lng;
  43.  
  44. */
  45. var lat = input.lat();
  46.  
  47. $(function(){
  48. $.ajax
  49. ({
  50. type: "POST",
  51. url: "przetworzkomentarz_v2.php",
  52. data: {zmienna:"lat"},
  53. cache: false,
  54. });
  55. });
  56.  
  57. } else {
  58. alert('Geocode was not successful for the following reason: ' + status);
  59. }
  60. });
  61.  
  62.  
  63. }
  64.  
  65. google.maps.event.addDomListener(window, 'load', initialize);
  66.  
  67. </script>

tak przesyłam dane - forma
  1. <form action="przetworzkomentarz_v2.php" method="post" class = "form1">


tu próba dodania zmiennej lat do przesyłanych danych
  1. <input type="hidden" name="save_name" id="input1" value="lat">

na dole, jest to forma, mam jeszcze przycisk :submit", który przesyła dane do pliku .php, pozostałe dane przesyła, jedynie lat i lng (szerokoścgeogr i wysgeograf.) nie sa przesylane
  1. <input type="submit" id = "ff" value="Prześlij informacje"></p>


chociaż w pytaniu jest głównie kod js to dałem na forum php bo chodzi mi o przeslanie do takiego pliku. Jakby co to zmienie forum.
Pomóżcie .
Turson
[JAVASCRIPT] pobierz, plaintext
  1. data: {zmienna:"lat"},
[JAVASCRIPT] pobierz, plaintext

zamień na
[JAVASCRIPT] pobierz, plaintext
  1. data: {zmienna:lat},
[JAVASCRIPT] pobierz, plaintext


Poza tym, po
[JAVASCRIPT] pobierz, plaintext
  1. var lat = input.lat();
[JAVASCRIPT] pobierz, plaintext

daj
alert(lat), to zobaczysz, czy jest tam prawidłowa wartość.

Konsole nie sypie błedami questionmark.gif
Gość
wprowadziłem te zmiany, alert zwraca dobrą wartość, natomiast po wciśnięciu przycisku "submit" dalej przesyła pustą tablicę (mam to wypisane print_r)
Turson
print_r($_POST) puste, czy coś innego sprawdzasz?
Gość
Tak print_r($_POST); daje pusta tablicę, tzn własciwie to źle napisałem daje [save_name] => lat , zamiast [save_name] = 52,34344, oraz przesyła pozostałe dane z formularza poprawnie.
nospor
facepalmxd.gif
Kurcze, naprawde nie odrozniasz pustej tablicy od tablicy z danymi?? Jak mozesz pisac ze dostajesz puste, podczas gdy sam widzisz ze puste nie jest?questionmark.gif? Dobrze, ze chociaz po setnym poscie sie poprawiles

A zamieniles "lat" na lat jak ci kazano na samym poczatku??
Gość
moge, bo wczesniej zwracało mi pustą tablicę i pomyliłem,
no raczej że zmieniłem , przecież napisałem o tym nawet.
nospor
Cytat
no raczej że zmieniłem , przecież napisałem o tym nawet.
Tja... pisales tez o pustej tablicy, ktora pusta nie byla. Wiec wiesz, wolalem sie upewnic wink.gif

Pokaz kod po zmianach
-mac-
  1. var lat = input.lat();
  2. alert(lat);
  3. $(function(){
  4. $.ajax
  5. ({
  6. type: "POST",
  7. url: "przetworzkomentarz_v2.php",
  8. data: {zmienna:lat},
  9. cache: false,
  10. });
  11. });
  12.  
  13. } else {
  14. alert('Geocode was not successful for the following reason: ' + status);
  15. }
  16. });
  17.  
  18.  
  19. }
  20.  
  21. google.maps.event.addDomListener(window, 'load', initialize);
  22.  


Może nie działac z powodu takiego, że dołączam jquery -1.4.1.min , a nie inną?
nospor
ale czemu robisz to tak:
$(function(){

$.ajax

({

type: "POST",

url: "przetworzkomentarz_v2.php",

data: {zmienna:"lat"},

cache: false,

});

});
questionmark.gif
MA byc tak:
$.ajax

({

type: "POST",

url: "przetworzkomentarz_v2.php",

data: {zmienna:lat},

cache: false,

});

a nie w funkcji, bez sensu miales.
-mac-
Tak, być może ale dalej nie chce przesyłać, zwraca to samo, to może jeszcze pytanie do php, odwołuję sie do tego ajaxa : $lat = $_POST['zmienna'];
chyba dobrze ?
nospor
skoro alert zwraca ci poprawną wartosc, to nie ma bata, ale i ajaxem musi isc poprawnie.
Pokaz jeszcze raz DOKLADNIE co zwraca
print_r($_POST);
oraz pokaz kod, po moich ostatnich poprawkach
-mac-
print zwraca:

Array ( [obiekt] => [boc] => option1 [gwiazdki] => option0 [address] => Warszawa, Pol [save_name] => lat [region] => [kod] => [poczta] => [tels] => [telk] => [email] => [www] => [qchnia] => option0 [qchnia2] => option0 [qchnia3] => option0 [nazwisko] => [imie] => [cena] => option0 [komentarz] => ) Array ( )

wypisuje $_POST i poniżej $_GET

kod:

  1. var lat = input.lat();
  2. alert(lat);
  3. $.ajax
  4.  
  5. ({
  6.  
  7. type: "POST",
  8.  
  9. url: "przetworzkomentarz_v2.php",
  10.  
  11. data: {zmienna:lat},
  12.  
  13. cache: false,
  14.  
  15. });
  16.  
  17.  
nospor
W kodzie masz zmienna, w print_r save_name....

poza tym w kodzie ajaxem wysylasz tylko jedną zmienną a nie 1000 jak widac w print_r. Cos krecisz panie kolego, albo robisz print_r nie tam gdzie trzeba albo sprawdzasz nei tam gdzie trzeba
-mac-
napisałem wszystko w pytaniu- tam zobaczysz, skąd mam save_name. Napisałem też , że poza zmienną 'zmienna' z ajaxa mam klikanaście innych zmiennych które wpisuje się do formularza.
nospor
Ajaxe wysylasz tylko to:
data: {zmienna:"lat"},

jesli wysylasz forma normalnie, to nigdzie nie widze pol lat i lng wiec nie wiem co tam masz
Gość
no tak , pól lat i lng nie ma, tzn nie ma takich miejsc w które sie je wpisuje w formularzu , skrypt wyszukuje miejsce na mapie i wtedy mozna z niego odczytać współrzedne.
nospor
No to pokaz mi kod, w ktorym przypisujesz te wspolrzedne do pola formularza ktory wysylasz.

Jedyne co widze to to:
<input type="hidden" name="save_name" id="input1" value="lat">
ale tutaj jako wartosc wpisujesz tekst LAT, wiec nic dziwnego ze postem idzie ci wlasnie tekst LAT
Gość
no tak, masz rację nie przypisuję chyba tego kodu do formularza, też tak myslałem ale nie bardzo potrafię to zrobić. Próbowałem dołozyć przycisk, oprócz tego co wyszukuje żeby zapisywać ale nie wyszło. Może potrafisz to zrobić ?
-mac-
dobra, spróbowałem tak:
  1. $(function vv(){
  2. var lat = input.lat();
  3.  
  4. $.ajax
  5. ({
  6. type: "POST",
  7. url: "przetworzkomentarz_v2.php",
  8. data: {xlat:lat},
  9. cache: false,
  10. });
  11. alert(lat);
  12. });
  13.  

a potem przy wysłaniu całej formy:
  1. <input type="submit" onClick = "vv()" id = "ff" value="Prześlij informacje">


Ale oczywiście nie działa...
Turson
Czym objawia się nie działanie?
Czemu zawsze z każdego trzeba wydusić co nie działa. Najlepiej napisać "NIE DZIAŁA" i wszyscy mają się domyślać o co chodzi...
-mac-
No więc owo niedziałanie widoczne jest co prawda w dotychczasowych postach ale ok, napiszę:
po prostu przy przesyłaniu wyskakuje wynik pusty.
Zrobiłem też tak :
  1. $lat = $_POST['xlat'];
  2. echo 'wypisanie zmiennej: '.$lat;


i to wywołanie daje sam text "wypisanie zmiennej", bez argumentu. Konsola chroma też nie pokazuje żadnych błedów.
-mac-
no i print_r($_POST) tez pokazuje tylko pozostałe dane z formularza, a nie oczekiwane przeze mnie wartości lat
markuz
A gdzie masz funkcję input.lat() której używasz do określenia zmiennej xlat?
Turson
[JAVASCRIPT] pobierz, plaintext
  1. function vv(){
  2. var lat = input.lat();
  3.  
  4. $.ajax
  5. ({
  6. type: "POST",
  7. url: "przetworzkomentarz_v2.php",
  8. data: {xlat:lat},
  9. cache: false,
  10. });
  11. alert(lat);
  12. };
[JAVASCRIPT] pobierz, plaintext


Załącz też jakieś nowsze jQuery, np. 1.9+
nospor
gosciu oraz Turson: nie wiem, czemu jeszcze zaden z was sie nie kapnal, choc juz to chyba pisalem:
Olejcie ten AJAX, bo gosciu forma sprawdza przy normalnym wyslaniu. Ludzie kochani, czytajcie z wieksza uwagą. Gosciu ma ustawic pole formularza w html a nie ajaxa, gdyz on sprawdza forma wysylanego normlanie a nie ajaxem...
-mac-
kod mam identyczny jak podałes , query zmieniłem na 1.11.0. oczywiście efekt już opisałem.(ciagle puste miejsce)
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.