• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Wysłanie zmiennej JS do PHP funkcją $.ajax. Jak to zrobić?

Object Storage Arubacloud
0 głosów
1,077 wizyt
pytanie zadane 1 listopada 2016 w JavaScript przez niezalogowany
zamknięte 1 listopada 2016
Witam, od paru dni się męczę i nie mogę tego zrobić. Czy ktoś bardzo dobry mógł by mi wyjaśnić ja przy użyciu ajax przesłać tablice js do php? Na odwrót udaje mi się bez problemu przy użyciu funkcji JQ $.ajax. Wiem że ta funkcja może też wysyłać json do php a nie tylko pobierać. Ale za Chiny nie mogę tego dokonać. Używałem wszystkich poradników tego świata i zawsze $_POST nie istnieje chociaż niby $.ajax zwrócił success. Czy ktoś wyjaśni mi to, z góry dziękuje za zainteresowanie. Pozdrawiam!
komentarz zamknięcia: Uzyskana odpowiedz
komentarz 1 listopada 2016 przez Ivan Maniak (60,650 p.)
Podaj nam kod, który nie działa. Na pewno będzie łatwiej wytłumaczyć co robisz źle :)
komentarz 1 listopada 2016 przez writen Nałogowiec (29,060 p.)
komentarz 1 listopada 2016 przez niezalogowany

js

    $.ajax({
        type: "POST",   //typ połączenia na post
        url: "test.php",
        dataType : 'json',
        data: {
            zmienna1 : 'przykladowytext',
            zmienna2 : 210
        },
        success: function(json) {
            console.log(json);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log(textStatus, errorThrown);
        }
    });

php test.php

echo json_encode([
   "zmienna1"=>$_POST["zmienna1"],
   "zmienna2"=>$_POST["zmienna2"],
]);

konsola zwraca Object zmienna1: "przykladowytext"zmienna2: "210"__proto__: Object

za to strona test.php zwraca

Notice: Undefined index: zmienna1 in /opt/lampp/htdocs/test.php on line 3

Notice: Undefined index: zmienna2 in /opt/lampp/htdocs/test.php on line 4
{"zmienna1":null,"zmienna2":null}

komentarz 1 listopada 2016 przez Comandeer Guru (601,590 p.)

A co zwraca var_dump( $_POST );?

komentarz 1 listopada 2016 przez writen Nałogowiec (29,060 p.)
Czyli wszystko działa tak jak powinno.

W czym problem?

Logiczne jest chyba, że jak uruchomisz sam plik test.php bez przesyłania żadnych danych, to tablica POST będzie pusta.
komentarz 1 listopada 2016 przez niezalogowany
Nie uruchamiam samego test.php tam ten post powinien być

 var_dump( $_POST ); zwraca array(0) { }
komentarz 1 listopada 2016 przez Ivan Maniak (60,650 p.)

Spróbuj, tak dla pewności, w JS wstawić apostrofy pomiędzy zmienna1 i zmienna2


$.ajax({
    type: "POST",   //typ połączenia na post
    url: "test.php",
    dataType : 'json',
    data: {
        "zmienna1" : 'przykladowytext',
        "zmienna2" : 210
    },
    success: function(json) {
        console.log(json);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log(textStatus, errorThrown);
    }
});

 

komentarz 1 listopada 2016 przez niezalogowany
w tedy w consoli zwróciło mi

parsererror SyntaxError: Unexpected token a in JSON at position 0(…)
komentarz 1 listopada 2016 przez writen Nałogowiec (29,060 p.)

konsola zwraca Object zmienna1: "przykladowytext"zmienna2: "210"__proto__: Object

Skoro konsola zwraca obiekt z danymi, które AJAXem przesłałeś do pliku test.php, to znaczy że plik ten odebrał te dane i je zwrócił.

Nie uruchamiam samego test.php tam ten post powinien być 

Zupełnie brakuje logiki w twoich wypowiedziach. Przecież sam napisałeś: 

za to strona test.php zwraca

Notice: Undefined index: zmienna1 in /opt/lampp/htdocs/test.php on line 3 

Notice: Undefined index: zmienna2 in /opt/lampp/htdocs/test.php on line 4 
{"zmienna1":null,"zmienna2":null}

Powyższy błąd pojawi się gdy uruchomisz skrypt test.php bezpośrednio, bez AJAXa i przesyłania danych. No bo skąd niby ten POST ma ci się tam wziąć?

komentarz 1 listopada 2016 przez niezalogowany
Inaczej, uruchamiam stronę która uruchamia skrypt z ajax, na tej stronię, gdy włączam konsole zwraca object wiec wszystko super. Zostawią stronę tak jak jest. Na tej stronię jest też link do strony test.php klikam go (link otwiera się w innej zakładce,strona ze scriptem stoi jak stała) a tam

Notice: Undefined index: zmienna1 in /opt/lampp/htdocs/test.php on line 3  

Notice: Undefined index: zmienna2 in /opt/lampp/htdocs/test.php on line 4  
{"zmienna1":null,"zmienna2":null}

wiec jak to możliwe skoro script został odpalone i wszystkie znaki na niebie i ziemi wskazują że POST powinien istnieć.
komentarz 1 listopada 2016 przez Comandeer Guru (601,590 p.)

Owszem, skrypt został odpalony… w innym oknie przeglądarki, dla innego żądania. HTTP jest bezstanowe, co oznacza, że wynik jednego żądania nie wpływa na wyniki innych.

komentarz 1 listopada 2016 przez writen Nałogowiec (29,060 p.)

wiec jak to możliwe skoro script został odpalone i wszystkie znaki na niebie i ziemi wskazują że POST powinien istnieć.

No niestety z kosmosu te dane ci się nie wezmą.

Jeśli chcesz tak zrobić to powinieneś gdzieś utrwalić te dane, np.w pliku, bazie danych, itp. Następnie napisać skrypt, który te dane odczyta i wyświetli.

komentarz 1 listopada 2016 przez niezalogowany
Mogę je przechwycić i włożyć do zmiennej sesyjnej ?
komentarz 1 listopada 2016 przez writen Nałogowiec (29,060 p.)
Możesz. Nie wiemy jednak czy jest w tym jakiś sens, bo nie wiemy co konkretnie chcesz osiągnąć.
komentarz 1 listopada 2016 przez niezalogowany
Po prostu potrzebuje przechować zmienne z js w zmiennej sesyjnej, ale nie mogę tego uczynić. Bo nawet jak odpalę tego ajax a url podam ten sam plik i poniżej dam tagi php gdzie spróbuje złapać post to on nie istnieje. Wiec jak skoro to jest to sam żądanie
komentarz 1 listopada 2016 przez writen Nałogowiec (29,060 p.)
To nie jest to samo żądanie.

Wyślij dane przez AJAX, zapisz dane do sesji. Stwórz nowy skrypt, który będzie odczytywał dane z sesji i je wyświetli.
1
komentarz 1 listopada 2016 przez niezalogowany
Wielkie dzięki za pomoc wszystkim :) Największym błędem jednak okazało się nie dodanie session_start();

Bardzo wiele się od Panów dowiedziałem dziękuje jeszcze raz :)

Podobne pytania

0 głosów
1 odpowiedź 938 wizyt
pytanie zadane 30 października 2016 w JavaScript przez niezalogowany
0 głosów
2 odpowiedzi 783 wizyt
0 głosów
1 odpowiedź 311 wizyt
pytanie zadane 17 czerwca 2016 w JavaScript przez pietrek98 Początkujący (430 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...