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

Przesłanie wartości zmiennej z JS do PHP

Object Storage Arubacloud
0 głosów
510 wizyt
pytanie zadane 27 listopada 2016 w JavaScript przez Piregus98 Nowicjusz (210 p.)

Witam,chciałbym zapytać się dlaczego nie mogę przesłać wartości zmiennej z JQuery do PHP.

Server zwraca błąd "Notice: Undefined index: variable in ".

Kod : 

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
var variableToSend = 'foo';
$.post('test2.php', {variable: variableToSend});
</script>
</head>



<body>



</body>

<?php
$variable = $_POST['variable'];
echo $variable;
?>
</html>

 

komentarz 27 listopada 2016 przez efiku Szeryf (75,160 p.)
I jak to ma niby działać?

2 odpowiedzi

+1 głos
odpowiedź 27 listopada 2016 przez xandros Nałogowiec (29,450 p.)
wybrane 27 listopada 2016 przez Piregus98
 
Najlepsza

pierwszy plik (pewnie index.html):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="content"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
    var variableToSend = 'foo';
    $.post('/test2.php', {variable: variableToSend}, function (response) {
        document.getElementById('content').innerHTML = response;
    });
</script>
</body>
</html>

2 plik (test2.php): [wymagany php7]

$variable = $_POST['variable'] ?? '';
echo $variable

 

komentarz 27 listopada 2016 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
Jak już mamy jQuery to nie lepiej zamiast document.getElementById('content') dać $("#content") ? :)
komentarz 27 listopada 2016 przez xandros Nałogowiec (29,450 p.)
Nie widze różnicy :P

Ale tak, masz racje.
komentarz 27 listopada 2016 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
Różnica jest taka że kod jest krótszy ;D
komentarz 27 listopada 2016 przez Piregus98 Nowicjusz (210 p.)

Przepraszam, mógłbym prosić o wytłumaczenie zastosowania funkcji która przyjmuje argument response.

$.post('/test2.php', {variable: variableToSend}, function (response) {
        document.getElementById('content').innerHTML = response;
    });

 

komentarz 27 listopada 2016 przez xandros Nałogowiec (29,450 p.)
Zamień wewnetrzny html elementu w dokumencie o id "container". W naszym wypadku to będzie div.

Response to po prostu ciało odpowiedzi. W naszym przypadku zmienna, którą wysyłamy POSTem.
komentarz 27 listopada 2016 przez Piregus98 Nowicjusz (210 p.)
Ok, dziękuje.
komentarz 28 listopada 2016 przez Piregus98 Nowicjusz (210 p.)

Odnośnie tematu, chciałbym zapytać w jaki sposób ułożyć ten skrypt, aby po naciśnięciu na obrazek wyciągał tabelkę z bazy danych o takiej końcówce co id obrazka.

Główna strona która ma pobierać id obrazka i wyświetlać pobraną tabelkę z bazy danych:


<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>


</head>




<body onload="start()">
<img id="0" src="image/php.png"/>
<img id="1" src="image/pizza.jpg"/>

<div id = "show"></div>
<script>
for(var i = 0;1>=i;i++){
var images=document.getElementsByTagName("IMG")[i];
images.addEventListener('click',function(e){
if(e.target && e.target.nodeName == "IMG"){
var ids = e.target.id;
$.post('main.php',{currentid:ids});

}
});
}

</script>
<?php require'main.php' ?>

</body>


</html>

 

Skrypt który ma pobierać odpowiedną tabelkę:

<?php
$id = $_POST['currentid'];

$conn = mysql_connect("localhost","root","1111") or die(mysql_connect_error());
mysql_select_db("tutorial",$conn);
$qry = "select * from product".$id;
$result = mysql_query($qry,$conn);
while($row = mysql_fetch_assoc($result)){
   echo "Nazwa : ".$row['name'],"<br/>";
}


?>

Tak wiem, moje myślenie jest dość dziwne, wręcz głupie, ale php uczę się od niedawna.

Więc wymyślam różne dziwne rzeczy i próbuję je zrealizować, ale niekiedy nie mam pojęcia jak dalej.

 

komentarz 28 listopada 2016 przez xandros Nałogowiec (29,450 p.)

1 kod:

  1. można ten kod skrócić: https://jsfiddle.net/7rp0g2sf/
  2.  skrypty ładuj na na końcu htmla, nie przez onLoad na body (usun onload="start()"). Tak, jquery tez. Tylko pamietaj go załadować przed swoim kodem.
  3.  id zaczyna się od 1, nie od 0.
  4. nie jest ci potrzebne "<?php require'main.php' ?>" (chyba)

2 kod:

  1. musisz pobrać requesta jako inta, najłatwiej zrobić to tak:
    $id = (int) $_POST['currentid'];
    
  2. zmień mysql na PDO albo na mysqli (jest pełno tego na sieci... może kiedyś zrobie filmik o tym)
  3. Użyj binowania zmiennych, bo inaczej możesz dostać sqlinjection
  4. w query brakuje słówka where: 
    SELECT  * FROM product WHERE id = $id

     

Według mnie lepiej byłoby wpierw sfetchować wszystkie wyniki, a później wysłać go w formie jsona, i po stronie JSa rzucić wszystko do tabeli, ale skoro się uczysz, to możesz na razie zwracać stringa jako odpowiedź. 

komentarz 29 listopada 2016 przez xandros Nałogowiec (29,450 p.)
Polecam raczej:

http://helion.pl/ksiazki/czysty-kod-podrecznik-dobrego-programisty-robert-c-martin,czykov.htm

A co do tych ksiazek, lepiej wyjdziesz czytajac (aktualne) artykuly, nizeli ksiażki, bo te technologie się zmieniaja.

 

...I pewnie ksiazki juz sa przestarzałe.
0 głosów
odpowiedź 27 listopada 2016 przez hoktaur Pasjonat (22,250 p.)

Może bardziej w ten deseń:

Plik index.html

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
        $('body').ready(function(){
                        var variableToSend = 'foo';
                        $.post('test2.php',
                                {
                                        variable: variableToSend
                                }, function(data, status){
                                        $('body').html(data);
                                }
                        );
                }
        );
</script>
</head>
<body>

</body>

</html>

plik test2.php

 <?php
     echo $_POST['variable'];
 ?>

 

komentarz 27 listopada 2016 przez xandros Nałogowiec (29,450 p.)
komentarz 27 listopada 2016 przez hoktaur Pasjonat (22,250 p.)

To wtedy można zmienić linie na:

if(isset($_POST['variable'])) echo $_POST['variable'];

ale wydaje mi się że nawet gdy zmienna będzie pusta to i tak utworzy $_POST['variable'];

komentarz 27 listopada 2016 przez xandros Nałogowiec (29,450 p.)
Dostaniesz notice albo warning, że dana zmienna (klucz arraya) nie istnieje.

Podobne pytania

0 głosów
2 odpowiedzi 290 wizyt
pytanie zadane 20 marca 2020 w JavaScript przez saseq Nowicjusz (140 p.)
+1 głos
1 odpowiedź 273 wizyt
pytanie zadane 14 sierpnia 2019 w JavaScript przez Bartłomiej Bolesta Obywatel (1,630 p.)
0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 9 lipca 2019 w PHP przez Hinzeq Użytkownik (860 p.)

92,568 zapytań

141,420 odpowiedzi

319,617 komentarzy

61,953 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!

...