Jak JS ma przekazć zmienną do PHP?

Jak JS ma przekazć zmienną do PHP?
James Prada
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:65
0

Mam taki fragment kodu:

Kopiuj
function like(group) {
        $.post("like.php", {group:group}, function onSuccess(data) {
        $("#likes- " + group).text(data.likes);
        });

I muszę mieć to w pliku like.php... takim...

Kopiuj
<?php
$group = // NO I JAK MAM TO ZROBIĆ?
$currentLikes = file_get_contents("like-$group.txt");
$newLikes = $currentLikes + 1;
file_put_contents("like-$group.txt", $newLikes);
echo json_encode(['likes' => $newLikes]);
?>

Dziękuję za pomoc!

SI
SI
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:136
0

No jak robisz ajaxem POST to powinieneś mieć po stronie serwera to co wyślesz jako dane w tablicy $_POST jeśli piszesz w czystym PHP.

katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0

Warto już zostawić JQuery i użyć wbudowanego w przeglądarkę FetchAPI:
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API```
Wówczas przykład by wyglądał tak:

Część HTML i JavaScript:

Kopiuj
<html><body>
  <script>   
  
    var dataToSend = {
      zmienna1 : "Moje dane do wysłania do serwera jako POST",
      zmienna2 : "Inna zmienna",
      zmienna3 : "Jeszcze inna zmienna",
    } ;
  
    var requestInit = {
      'method': 'POST',
      'mode': 'cors',
      'cache': 'no-cache',
      'headers': {
        'Content-Type': 'application/json'
      },
      'referrerPolicy': 'no-referrer',
      'body': JSON.stringify (dataToSend)
    };     
     
    var retPromise = fetch( "test.php" , requestInit ).then(response => response.text())
    .then((response) => {        
      try {
        // Wszystko OK w zmiennej response mamy odpowiedź z serwera
        console.log ( "OK:", response ) ;
      }catch(err){
        // Coś jest źle
        alert ( "Cuś poszło źle!" ) ;
      }
    })
    .catch( err => console.log(err) );
     
  </script>
</body></html>

No i po stronie PHP ( plik test.php ):

Kopiuj
<?php

    //
    // Dane przychodzą jako JSON w POST i tak odbiera się je w PHP
    //
    $input = file_get_contents('php://input') ; 
    $input = json_decode( $input, true ) ;
    
    //
    // Tu możemy opracować dane i odesłać do przeglądarki ...
    //
    echo "\r\nPomniejszony ciąg zmiennej 1:".strtolower ( $input [ 'zmienna1' ] ) ;
    echo "\r\nPowiększony ciąg zmiennej 2:".strtoupper ( $input [ 'zmienna2' ] ) ;


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
edytowany 2x, ostatnio: katakrowa
James Prada
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:65
0

@katakrowa: Okay. Zakładam, że kopjuj-wkleje to i zadziała. Ale jak odbieram te dane?

$_POST['zmienna1'];
$_POST['zmienna2'];
$_POST['zmienna3'];

itd?

edytowany 1x, ostatnio: James Prada
katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0
James Prada napisał(a):

@katakrowa: Okay. Zakładam, że kopjuj-wkleje to i zadziała. Ale jak odbieram te dane?

Przejrzałeś chociaż do końca tego posta co Ci napisałem? Chyba nie.

Kopiuj
<?php

    //
    // Dane przychodzą jako JSON w POST i tak odbiera się je w PHP
    //
    $input = file_get_contents('php://input') ; 
    $input = json_decode( $input, true ) ;

Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
edytowany 1x, ostatnio: katakrowa
Zobacz pozostały 1 komentarz
katakrowa
Czego nie rozumiesz? Tego, że w zmiennej $input masz te dane? Poza tym tablica $_POST to nie to samo co dane POST otrzymane po HTTP dlatego nie odbiera się ich za pomocą tablicy $_POST tylko tak jak powyżej.
katakrowa
Uruchom ten program u siebie zobacz co masz w tych zmiennych ( $input ) to wszystko zrozumiesz. Jak będziesz zgadywał zamiast myśleć to gów..o z tego Ci wyjdzie.
James Prada
Olewam to. To jakaś matnia. Nie wiem za co zabrać się na początku. Wszyscy mi coś radzą a wychodzi tego tylko wielki belkot. Problem polega na tym, że tłumaczysz coś jak coś oczywistego, jakbyś mówił do samego siebie. Zakładasz że ktoś komuś coś wykładasz wie wszystko to co ty a nawet więcej. To błąd. Rozumiesz?
James Prada
Przeczytaj to co napisałes: Dane przychodzą jako JSON w POST po czym piszesz json_decode Input = input. Człowieku. Czy ty wiesz co ty piszez a co ty tłumaczysz? Wybraź sobie, ze robisz lekcję w przedszkolu. Okey?
katakrowa
Człowieku dałem Ci gotowy sprawdzony i działający przykład, który masz jedynie uruchomić na swoim komputerze dosłownie 2 pliki kopiuj / wklej. Jeśli nie umiesz tego zrobić to znaczy, że Twoim problemem nie jest to o co pytasz w temacie tylko ewidentny brak podstaw PHP, HTML i JS. Doczytaj najpierw jak działa przeglądarka potem czym jest HTML i JavaScript a na końcu co to jest PHP i jak się uruchamia skrypty PHP na serwerze. Warto też poczytać co to są metody przesyłania danych na serwer POST i GET i nie chodzi o tablice w PHP.
katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0

Poczytaj sobie o funkcj JavaScript: console.log()
oraz o funkcjach PHP: **print_r **lub var_dump

Bez tego będziesz zgadywał a nie pisał programy.


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.
katakrowa
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Chorzów
  • Postów:1670
0

O widzę, że @James Prada: odszedł w konwulsjach ...


Projektowanie i programowanie. Hobbystycznie elektronika i audio oszołom.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.