Zpracovani ajax $.post promenne – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zpracovani ajax $.post promenne – JavaScript, AJAX, jQuery – Fórum – Programujte.comZpracovani ajax $.post promenne – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

hbo830
Newbie
14. 1. 2015   #1
-
0
-

Zdravim, furt me nenapada proc, ale po odeslani promenne pres ajax do php scriptu mi script tu promennou nezna. Tedy pokud ji chci treba vypsat. Ale pokud tu promennou pouziju treba jako nazev souboru, ktery chci ulozit, tak mi ho normalne ulozi pod tou poslanou promennou.

$("h1").click(function(){
	$.post("index2.php", {jmeno: "Pepa"});
});

<?php
        fopen("{$_POST['jmeno']}", "w");  //v pohode vytvori soubor "Pepa"
        echo "{$_POST['jmeno']}";	  //Undefined index: jmeno
?>
Nahlásit jako SPAM
IP: 80.250.25.–
Kit+15
Guru
14. 1. 2015   #2
-
0
-

#1 hbo83 

echo "$_POST[jmeno]";
Nahlásit jako SPAM
IP: 82.117.132.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
hbo830
Newbie
14. 1. 2015   #3
-
0
-

#2 Kit
To je to samy, v tom to neni.

Nahlásit jako SPAM
IP: 80.250.25.–
Kit+15
Guru
14. 1. 2015   #4
-
0
-

#3 hbo83
Určitě tam máš nějaký překlep.

Nahlásit jako SPAM
IP: 37.48.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #5
-
0
-

hbo83 - Zkus priste poslat funkcni priklad se vsim vsudy. Dopisovat to nejdu. Ta cast kodu, co jsi sem dal, vypada funkcne, pokud to neni v jednom souboru. Pokud jo, tak post pri nove otevrene strance neexistuje a tudiz by se nemel vytvaret ani soubor. Leda, ze byl vytvoren nekdy driv. Takze, pokud funguje vytvoreni, tak to druhe musi taky, pokud tam nemas preklep.

Zasadne se snazim toto nepsat
echo "{$_POST['jmeno']}";
echo "$_POST[jmeno]";
Pouzivam
echo $_POST['jmeno'];
echo "jmeno = " . $_POST['jmeno'];
echo "x" . $_POST['jmeno'] . "x"; // kdyz mam takovych vypisu vic a pulka znich je prazdnych
echo ":" . $_POST['x'];
echo ":" . $_POST['y'];

 

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:f89a:35...–
KIIV
~ Moderátor
+43
God of flame
15. 1. 2015   #6
-
0
-

#5 peter
ja osobne pouzival  print_r($_POST);  v <pre> bloku :)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hbo830
Newbie
15. 1. 2015   #7
-
0
-

Prvni soubor index.php ze kterýho predavam promennou do druhyho souboru index2.php , ten nasledne naloaduju zpet do indexu

<html>
    <head>
        <meta charset="UTF-8">
        <script src="jquery-1.11.0.js"></script>
        <title></title>
    </head>
    <body>
        <h1>klikni</h1>
        
    </body>
    
    <script>
    $("h1").click(function(){
        $.post("index2.php", {jmeno: "Pepa"}), 
        
        $("body").load("index2.php");
    });
    </script>
</html>

Zde je script index2.php, který má vypsat promennou.  

<?php

 fopen("{$_POST['jmeno']}", "w");
 echo $_POST['jmeno'];

?> 

Notice: Undefined index: jmeno in C:\xampp\htdocs\testovaci_ajax_post\index2.php on line 3

Warning: fopen(): Filename cannot be empty in C:\xampp\htdocs\testovaci_ajax_post\index2.php on line 3

Notice: Undefined index: jmeno in C:\xampp\htdocs\testovaci_ajax_post\index2.php on line 4

!!přesto mi to soubor s nazvem promenny vytvori

Nahlásit jako SPAM
IP: 80.250.25.–
KIIV
~ Moderátor
+43
God of flame
15. 1. 2015   #8
-
0
-

#7 hbo83
hlavne si ten soubor pred testem smaz, abys pak nemel pocit, ze se vytvori, a on byl jen uz davno vytvorenej

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hbo830
Newbie
15. 1. 2015   #9
-
0
-

#8 KIIV
Jasny, mazu ho pred kazdym testem. Pokud predavam pres formular, vse funguje jak ma, ale v tom ajaxu je zakopanej pes

Nahlásit jako SPAM
IP: 80.250.25.–
KIIV
~ Moderátor
+43
God of flame
15. 1. 2015   #10
-
0
-

proto si nech vysledek ajaxu zobrazit v pre elementu a do scriptu hod  print_r($_POST)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hbo830
Newbie
15. 1. 2015   #11
-
0
-

Hmm, tak v pre to zobrazuje promenne jak ma. Co to znamena?

Nahlásit jako SPAM
IP: 80.250.25.–
KIIV
~ Moderátor
+43
God of flame
15. 1. 2015   #12
-
0
-

#11 hbo83
tak to sem hod.. vcetne scriptu

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hbo830
Newbie
15. 1. 2015   #13
-
0
-

Tak ne, omlouvam se. Jsem to popletl. Tak i po tom co to loadnu do pre, mi to vrati prazdny pole. Jedinny co funguje je tohle: 

$("h1").click(function(){
        $.post("index2.php", {jmeno: "Pepa"}, function(data){
            $("h1").html(data);
Nahlásit jako SPAM
IP: 80.250.25.–
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #14
-
0
-

$.post("index2.php", {jmeno: "Pepa"})
$("body").load("index2.php");
Ja bych ti do toho nerad kecal, ale post sice odesle pozadavek na soubor, jenze load odesle dalsi pozadavek.
Cili, jesen z tech dvou radku tam nema byt. Zkus tam pouzit treba jen toto a zmenit to na GET:
$("body").load("index2.php?jmeno=Pepa");

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:f89a:35...–
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #15
-
0
-

Jo, ten druhej kod uz je v poradku.
$("h1").click(function(){ $.post("index2.php", {jmeno: "Pepa"}, function(data){ $("h1").html(data);
 

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:f89a:35...–
hbo830
Newbie
15. 1. 2015   #16
-
0
-

#14 peter
Zmena na get nepomaha. Ten load pozadavek je tam jen pro kontrolu, jde mi jen o pouziti te promenne ve druhem scriptu.

Ten druhy kod funguje, ale porad to neresi problem, ze ten druhy script tu promennou nezna. Nedokaze  ho pres echo ci jiny print vypsat, cili ani s nim nijak pracovat.

Nahlásit jako SPAM
IP: 80.250.25.–
Kit+15
Guru
15. 1. 2015   #17
-
0
-

#16 hbo83
Metody GET a POST jsou rozdílné. Jak název napovídá, GET je určen pro získávání dat ze serveru, POST pro ukládání dat na server. Neplést.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #18
-
0
-

No, kdyz zakomentuji v tom php ten druhej radek, tak mi tvuj kod s tim post s callback funkci funguje. takze mi ted jako neni uplne jasne, zda t to nefunguje nebo, v cem mas problem. Spoustim to jako
http://localhost/…ry/jq-in.htm
ajaxovy script ti spis jako file:///c:\... nemusi fungovat, na to je treba par uprav a nevim, zda to google ve svem jquery ma.

<html>
    <head>
        <meta charset="UTF-8">
        <!--script src="jquery-1.11.0.js"></script-->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
        <title></title>
    </head>
    <body>
        <h1>klikni</h1>
        
    </body>
    
    <script>
    $("h1").click(function()
        {
	var f,d;
	f = "jq-out.php";
	d = {jmeno: "Pepa"};
	$.post(f, d, function(data)
          {
          $("h1").html(data);        
	  });
        });
    </script>
</html>
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:89c3:1e...–
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #19
-
0
-

 pridam i ten php, pro jistotu

<?php
// fopen("{$_POST['jmeno']}", "w");
 echo $_POST['jmeno'];
?> 
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:89c3:1e...–
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #20
-
0
-

Nemas treba nejaky chrome nebo operu nebo tak neco alternativniho vuci funkcnim prohlizecum jako ff a ie? Nebo neni treba problem s kodovanim? Nebo, nemas tam treba bom-znak pro utf (pspad s oblibou pridava, pokud nezmenis nastaveni)?

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:89c3:1e...–
hbo830
Newbie
15. 1. 2015   #21
-
0
-

#20 peter
Pisu to v netbeans, testovano v chromu (na tvuj popud ted i v FF). Ten script cos poslal mi taky funguje, ale zkus pracovat s tou promennou v tom php scriptu , kterymu to posilas.

Nahlásit jako SPAM
IP: 80.250.25.–
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #22
-
0
-

Pracuji, vypisuji ji.
Nebo, vytvorim si soubor Pepa, zpisu do nej Ahoj a js mi vypise Pepa a text ze souboru, cili Ahoj
<h1>PepaAhoj </h1>
Nebo, jak jinak s ni mam pracovat?

<?php
// fopen("{$_POST['jmeno']}", "w");
echo $_POST['jmeno'];
echo file_get_contents($_POST['jmeno']);
?> 
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:89c3:1e...–
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #23
-
0
-

No, a protoze mne nebavi to kopirovat, tak jsem to ulozil do $n.
 Tenhle kod zas do pepy uklada dalsi ahoj, takze kazdym kliknutim mi h1 vypisuje vic a vic ahoju.

<?php
// fopen("{$_POST['jmeno']}", "w");
$n = $_POST['jmeno'];
echo $n;
echo file_get_contents($n);
$fp = fopen($n,'a');
fwrite($fp,'Ahoj');
fclose($fp);
?> 
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:89c3:1e...–
peter
~ Anonymní uživatel
4014 příspěvků
15. 1. 2015   #24
-
0
-

Nebo, jestli chces jednoduche pocitadlo... Ale musis do Pepa napsat rucne 0. Nebo to osetrit tak, aby filesize bylo vetsi nez 0.

<?php
$name = $_POST['jmeno'];
$size = filesize($name);
$fp   = fopen($name,'r');
$data = fread($fp,$size);
fclose($fp);
$fp   = fopen($name,'w');
fwrite($fp,$data*1+1);
fclose($fp);
echo $name.' = '.$data;
?>
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:89c3:1e...–
Kit+15
Guru
15. 1. 2015   #25
-
0
-

#23 peter
No, a protoze mne nebavi to kopirovat, tak jsem to ulozil do $n.

Proč zrovna do proměnné $n? Proč ne do proměnné $jmeno?

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
hbo830
Newbie
15. 1. 2015   #26
-
0
-

Ten script, kterymu chci predat tu promennou, vybira na zaklade te promenne radek z databaze, ktery potrebuji vypsat. Ale pokud ta promenna nejde predat, tomu scriptu, tak to nepobezi. Nepotrebuju vypis z toho scriptu vratit zpet, nybrz tu promennou zpracovat v nem. 

<html>
    <head>
        <meta charset="UTF-8">
        <script src="jquery-1.11.0.js"></script>
        <title></title>
    </head>
    <body>
        <div id="prvni">klikni</div>
	<div id="druhy">klikni</div>
	<div id="treti">klikni</div>        
    </body>
    
    <script>
    $("div").click(function(event){
        $.post("index2.php", {jmeno: event.target.id}), 
    });
    </script>
</html>

Mam tri divy. Po kliknuti na div potrebuju poslat id toho divu do scriptu treba zpracovani.php.

Kdyz kliknu na prvni, ma to poslat v promenne hodnotu prvni. Tedy $_POST['jmeno'] = "prvni".

Na zaklade hodnoty te promenne nactu data z databaze.

<?php

$servername = 'localhost';
$username = 'root';
$password = '';
$db = 'databaze';

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error){
    die ("connection failed:" . $conn->connect_error);
}

$sql = "SELECT * FROM tabulka Where nazev='{$_POST['jmeno']}'";
$result = $conn->query($sql);

$conn->close();
?>
Nahlásit jako SPAM
IP: 80.250.25.–
peter
~ Anonymní uživatel
4014 příspěvků
16. 1. 2015   #27
-
0
-

Co na to rici? Opet mi to funguje...

<html>
    <head>
        <meta charset="UTF-8">
        <!--script src="jquery-1.11.0.js"></script-->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
        <title></title>
    </head>
    <body>
        <div id="prvni">uloz prvni</div>
	<div id="druhy">uloz druhy</div>
	<div id="treti">uloz treti</div>        
<br>
        <p id="vystup"></p>
        
    
    <script>
    $("div").click(function(event)
        {
	var f,d;
	f = "jq-out.php";
	d = {jmeno: event.target.id};
	$.post(f, d, function(data)
          {
          $("#vystup").html(data);        
	  });
        });
    </script>
  </body>
</html>

<?php
$value = $_POST['jmeno'];
$name = 'Pepa';
$size = filesize($name);
$fp   = fopen($name,'r');
$data = fread($fp,$size);
fclose($fp);
$data .= $value;
$fp   = fopen($name,'w');
fwrite($fp,$data);
fclose($fp);
echo $data;
?> 

On by tag script mel byt bud v body nebo head. Ale ten minuly kod, co jsem poslal, ve FF fungoval, tak jsem si toho nevsiml. Je mozne, ze to nektery prohlizec neuznava, kdyz porusis pravidla.
Muzes, sim te, prestat michat data primo do programu? Jako treba $_POST primo do sql dotazu bez osetreni na chyby. Hackeri to maji radi. Zkus tam dat do te promenne "' OR ''='" :) Vznikne pak dotaz
SELECT * FROM tabulka WHERE nazev='' OR ''=''; -- coz je totez jako
SELECT * FROM tabulka WHERE ''=''; -- coz je totez jako
SELECT * FROM tabulka;
A pokud nemas sifrovana hesla, tak hacker prave ziskal kompletni tabulku hesel uzivatelu. Pokud tedy nasledny script zobrazi vsechny sloupce...
A ses si jisty, ze ten php kod je dobre? zkousel jsi misto $_POST tam napsat treba Pepa a spusteni toho kodu fungovalo? Ja jen, ze tam mas treba $result, ale z resultu se ziskavaji data dalsim kodem, ktery tam nemas uvedeny. Take tam nemas zadne echo.

--- tomino.php ---
<?php

$servername = 'localhost';
$username = 'root';
$password = '';
$db = 'databaze';

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error){
    die ("connection failed:" . $conn->connect_error);
}

//$jmeno = $_POST['jmeno'];
$jmeno = 'Pepa';
$sql = "SELECT * FROM tabulka Where nazev='$jmeno'";
$result = $conn->query($sql);
// tady schazi dalsi php kod a echo pro vyzkouseni vystupu

$conn->close();
?>


Az tam ten kod dopises a echo nejake hodnoty nebo print_r pro cele pole, tak si to spust
h ttp://localhost/x/jquery/jq-out.php
A pokud to vypise spravne, tak tak tam vratis post a echo zakomentujes.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:64ae:54...–
hbo830
Newbie
16. 1. 2015   #28
-
0
-

#27 peter
Diky za upozorneni na bezpecnost, ale tu zatim neresim dokud mi nefunguje zaklad. Misto $_POST jsem tam samozrejme zkousel davat string a ten normalne funguje. Ten script samozrejme pokracovani ma. 

<?php echo "{$row['nazev']}"; ?>

a se stringem funguje.

v tom scriptu co pises 

<script>
    $("div").click(function(event)
        {
	var f,d;
	f = "jq-out.php";
	d = {jmeno: event.target.id};
	$.post(f, d, function(data)//bez toho
          {
          $("#vystup").html(data);//bez toho        
	  });
        });
    </script>

to vraci data zpet do do indexu z kteryho ten php script volas, ale to prave nepotrebuju. To mi taky funguje.

Potrebuju aby ten php script vytahl data z db, ale nic nevracel tomu puvodnimu indexu.

Nahlásit jako SPAM
IP: 80.250.25.–
peter
~ Anonymní uživatel
4014 příspěvků
16. 1. 2015   #29
-
0
-

A co s temi daty ma delat? Ty data se ztrati, kdyz se nepouziji. Muzes tam dat pridej Pepu. Prida to Pepu, ok. I po dalsim stisku. Pak budes spesl volat novy ajax kvuli tomu, abys zobrazil vysledek?
Nemuzes dat funkci demo kod, ktery ti nefunguje a na nem popsat co? Jako, nezkousel jsem vytvorit tabulku, ale muzu zkusit klidne presne tvuj kod. Jen potrebuji nejak overit, neco vypsat, treba, podle ceho budu vedet, ze to funguje spravne nebo ne (ze se mi to vypise ci nevypise). Tvuj kod nic nevypisuje a neni dokoncen. Takze bych se neodvazoval tvrdit, ze funguje ci nefunguje, kdyz tam podstatne veci nejsou.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:64ae:54...–
hbo830
Newbie
16. 1. 2015   #30
-
0
-

Posilam link na stazeni toho prikladu. SQL si naimportuj. Tam je to jasne videt o co mi jde.

https://www.dropbox.com/sh/k3d240pq39ymg95/AAD12HeiW_reuw_F1X0T_nHaa?dl=0

Nahlásit jako SPAM
IP: 80.250.25.–
peter
~ Anonymní uživatel
4014 příspěvků
27. 1. 2015   #31
-
0
-

   

        $.post("index2.php", {jmeno: "Pepa"}); // odesli req na index2.php, promennou pepa
        $("pre").load("index3.php"); // nacti stranku index3.php pres GET, neposilas mu tam zadnou promennou

Jake prekvapeni, v index2.php se promenna pepa nezpracovava, takze ji odesilat nemelo asi smysl.

Jake prekvapeni, v index3.php je sice pepa, ale js prikaz load mu zadneho pepu neposila, cili $_POST i $_GET bude prazdny.

http://api.jquery.com/load/
"It is roughly equivalent to $.get(url, data, success)"
url = "index3.php"
data = nic
success = nic (resp, vysledek se mozna uklada do toho pre)

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:2827:7b...–
peter
~ Anonymní uživatel
4014 příspěvků
27. 1. 2015   #32
-
0
-

   

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <script src="jquery-1.11.0.js"></script>
        <title></title>
    </head>
    <body>
        <h1>post na index2 kde taham z db skrz string</h1>
        <h2>post na index3 kde chci tahat z db skrz variable</h2>
        <pre>            
        </pre>
        
    </body>
    
    <script>
    $("h1").click(function(){
        
        $("pre").load("index2.php");
    });
    
    $("h2").click(function(){
        
        $.post("index2.php", {jmeno: "Pepa"});
        
        $("pre").load("index3.php");
    });
    </script>
    
</html>
 <!--proste to nejde, hodnotu zpracovanou scriptem vratim zpet do indexu, ale s tou promennou v tom php scriptu proste pracovat nemuzu--> 


=== index2.php ===


<?php
// tady nic s $_POST nemas, tak proc sem prikazem //   $.post("index2.php", {jmeno: "Pepa"})// posilas Pepu?

$servername = 'localhost';
$username = 'root';
$password = '';
$db = 'test';

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error){
    die ("connection failed:" . $conn->connect_error);
}
//echo "connection succesfully";

$sql = "SELECT * FROM tabulka where jmeno='milos'";
$result = $conn->query($sql);

$conn->close();
?>

<?php
$row = $result->fetch_assoc();
echo "{$row['nazev']}"
?>


=== index3.php ===


<?php
$jmeno = $_POST['jmeno'];

$servername = 'localhost';
$username = 'root';
$password = '';
$db = 'test';

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error){
    die ("connection failed:" . $conn->connect_error);
}
//echo "connection succesfully";

$sql = "SELECT * FROM tabulka where jmeno='$jmeno'";
$result = $conn->query($sql);

$conn->close();
?>

<?php
$row = $result->fetch_assoc();
echo "{$row['nazev']}"
?>
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:2827:7b...–
hbo830
Newbie
27. 1. 2015   #33
-
0
-

#32 peter
Chybicka se vloudila, ten post s pepa mel bejt na index3

Nahlásit jako SPAM
IP: 80.250.25.–
peter
~ Anonymní uživatel
4014 příspěvků
27. 1. 2015   #34
-
0
-

No, dobre, ale porad mas dva ruzne requesty, jeden s post a druhy s get. Ten post udela, co ma a ten get neudela nic, protoze nema nic v $_POST.

//        $.post("index2.php", {jmeno: "Pepa"}); // odesli req post, pepa, vysledek nezobraz
        $.post("index3.php", {jmeno: "Pepa"}); // odesli req post, pepa, vysledek nezobraz
        $("pre").load("index3.php"); // odesli req get a vysledek zobraz
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:2827:7b...–
peter
~ Anonymní uživatel
4014 příspěvků
27. 1. 2015   #35
-
0
-

   

//Bud
    $("h2").click(function(){
        $.post("index3.php", {jmeno: "Pepa"}, function(data){$("pre").html(data);});
    });
//nebo
    $("h2").click(function(){
        $("pre").load("index3.php?jmeno=Pepa"); // v index3 zmenit z post na $jmeno = $_GET['jmeno'];
    });

//a nebovar XXX;$("h2").click(function(){ 
  $.post("index3.php", {jmeno: "Pepa"}, function(data){XXX = data; alert(XXX); });
 });
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:2827:7b...–
peter
~ Anonymní uživatel
4014 příspěvků
27. 1. 2015   #36
-
0
-

A nebo nebo, jestli to chces delat oboji 

--index3.php--

//$jmeno = $_POST['jmeno'];
//$jmeno = $_GET['jmeno'];
$jmeno = isset($_POST['jmeno']) ? $_POST['jmeno'] : (isset($_GET['jmeno']) ? $_GET['jmeno'] : ''); // existuje v post ? ano pouzij post : ne existuje v get ? ano pouzij get : ne

--- index.php ---

    $("h2").click(function(){
        $.post("index3.php", {jmeno: "Pepa"}); // bez zobrazeni
        $("pre").load("index3.php", {jmeno: "Pepa"}); // se zobrazenim
        //$("pre").load("index3.php?jmeno=Pepa"); // coz by taky fungovalo
    });
Nahlásit jako SPAM
IP: 2001:718:2601:1f7:2827:7b...–
hbo830
Newbie
28. 1. 2015   #37
-
0
-

zajmavy, pokud to poslu pres formular tak tu promennou script krasne vidi a muze s ni delat cokoliv.

pokud to postnu pres ajax, tak ji dokaze zpracovat (ulozit do DB napriklad), ale stejne mi to zahlasi "Undefined index"  

Nahlásit jako SPAM
IP: 80.250.25.–
peter
~ Anonymní uživatel
4014 příspěvků
28. 1. 2015   #38
-
0
-

To mas asi nejaky jiny kod. Mi to fungovalo bez problemu.
Undefined index to hlasi, kdyz tam nic neposles. Cili, to byl presne ten pripad, kdy v load() nemas Pepu. V jednom res posles pepu a v tom load zadneho neposilas. Jenze ten script ocekava Pepu a nic nedostane.
Nebo tam mas load sice s Pepou, ale ve scriptu nemas $_GET, ale $_POST.

No, proste si kod oprav a pokud to hlasi dal problem, tak zas musis ten kod poslat. Rict, ze ti to nejde, je zbytecne psat, kdyz clovek nevidi zmenu, kterou jsi s tim provedl.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:11bb:f5...–
hbo830
Newbie
30. 1. 2015   #39
-
0
-

   

<html>
    <head>
        <meta charset="UTF-8">
        <script src="jquery-1.11.0.js"></script>
        <title></title>
    </head>
    <body>
        <button id="ajax">odeslat POST</button>      
    <form action="index2.php" method="POST">
        <input name="jmeno">
        <input type="submit" value="submit">
    </form>//pokud tu promennou poslu pres formular, vsecko jde jak ma
           
    </body>
    
    <script>
    $("#ajax").click(function(){
        
        $.post("index2.php", {jmeno: "pepa"})
            .done(function(){
                alert ("hotovo")
            .fail(function(){
                alert ("spatny");
            });
        });
        $("body").load("index2.php");
    });  
    </script>
    
</html>
INDEX2

<?php

$jmeno = $_POST['jmeno'];//po odeslani promenne pres formular,
                           neni zadny problem.
                         //po odeslani pres ajax, ji nezna, cili
                           to z DB nicnevytahne

$servername = 'localhost';
$username = 'root';
$password = '';
$db = 'test';

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error){
    die ("connection failed:" . $conn->connect_error);
}

$sql = "SELECT * FROM tabulka where jmeno='$jmeno'";
$result = $conn->query($sql);

$row = $result->fetch_assoc();
echo "{$row['nazev']}";

$conn->close();

 

 

INDEX3 

<?php $jmeno = $_POST['jmeno'];//zde to promennou po odeslani pres ajax take nezna,
 ale i presto ji do DB ulozi jak má to je mi zahada


$servername = 'localhost';
$username = 'root';
$password = '';
$db = 'test';

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error){
    die ("connection failed:" . $conn->connect_error);
}

$sql = "INSERT INTO tabulka (nazev) VALUES ('$jmeno')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully<br>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();


Tak snad jsem to tam popsal správně. 1.Pokud poslu promennou pres formular, vsecko funguje jak ma. Script zna promennou, muze s ni jakkoliv manipulovat. 2.Pokud poslu pres ajax. Script ji nezna. a)kdyz ji poslu na index 2, nic mi to z DB nevytahne, ptze v ty promenny nic neni. b)ale kdyz ji poslu na index 3, ktery ma za ukol vlozit zaznam do DB, tak i presto ze to zahlasi neznamou promennou, tak to zaznam s obsahem ty promenny ulozi. ???zahada
 

Nahlásit jako SPAM
IP: 80.250.25.–
peter
~ Anonymní uživatel
4014 příspěvků
30. 1. 2015   #40
-
0
-

Ty tomu furt nerozumis.
Javascript pro ajax pouziva httprequest (google = javascript ajax httprequest).
JS script jquery pouziva take httprequest. Pouziva ho pro vice funkcni. Dve z nich jsou $.post() neco.load().
Pokud tedy zavolas 2 funkce, tak se pracuje se 2 rozdilnymi strankami.
- Pokud obe funkce nasmerujes na jednu stranku, ktera ocekava pepu a jedna funkce mu ho posle a druha ne, pak ta druha samozrejme neudela nic.
- Pokud ten php kod ocekava $_POST a ty pouzijes funkci, ktera odesila $_GET, tak take pochopitelne script selze.

Cetl jsi vubec, ze jsem ti tam psat a odkazoval na manual pro jquery, kde pisi, ze .load je GET, tudiz s tim php pracuje jako $_GET a ne $_POST?
Dival jsi se na ty kody, co jsem poslal a zkousel je? Treba ten, kde je upravene php pro $_GET i $_POST a je pouzite jako $.post, tak i .load().
http://programujte.com/…st-promenne/#…

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:7523:7c...–
peter
~ Anonymní uživatel
4014 příspěvků
30. 1. 2015   #41
-
0
-

Jak ti to jeste napsat....

$.post("index2.php", {jmeno: "pepa"}) .done(function(){ alert ("hotovo") .fail(function(){ alert ("spatny"); }); });
to je totez jako

<form action="index2.php" method="post">
<input type=hidden name=jmeno value=pepa>
<input type=button onclick="this.form.submit()">
</form>

$("body").load("index2.php");

<form action="index2.php" method="get">
<input type=button onclick="this.form.submit()">
</form>
 

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:7523:7c...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý