Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 2. diel - Metódy GET a POST v AJAXu

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Honza Bittner
Tvůrce
Avatar
Honza Bittner:28.9.2015 14:36

Jistě víte/tušíte o metodě GET, standardní http metoda, sloužící povětšinou k získávání dat ze serveru, samozřejmě to neznamená, že nemůže předávat serveru data formou query, to bez problémů může a taky toho často využívá pro specifikaci požadovaných dat.

To je ale věta...

Odpovedať
28.9.2015 14:36
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovedá na Honza Bittner
Neaktivní uživatel:28.9.2015 15:48

Technicky je to souvětí ;-) ... Kdybys chtěl mít konstruktivní poznámku k její stavbě, rozhodně si ji rád přečtu.

Odpovedať
28.9.2015 15:48
Neaktivní uživatelský účet
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovedá na Neaktivní uživatel
Honza Bittner:28.9.2015 16:25

Omlouvám se, pokud jsem se někde přepsal. Mnohokrát jsem to přepisoval a nechce se mi to kontrolovat, ale myšlenka by měla být OK. :)


Ty věty na sebe prostě vůbec nenavazují.

  1. Jistě víte/tušíte o metodě GET, standardní http metoda, sloužící povětšinou... - Toto na sebe vůbec hezky nenavazuje.

Jistě víte/tušíte o metodě GET, což je standardní http metoda, která slouží povětšinou...
Jistě víte/tušíte o metodě GET, standardní http metodě, která slouží povětšinou... (pokud je to uprostřed věta vložená, což je tady IMHO ne příliš šťastná volba)

  1. ... dat ze serveru, samozřejmě to neznamená ... - Zase, logicky to na sebe nenavazuje.

... dat ze serveru, což ale samozřejmě (pryč s to) neznamená ...

  1. ... serveru data formou query, to bez problémů může ... - Tady jsi navázal tak, jako kdyby jsi větu ukončil, ale psal jsi dál do souvětí.

... serveru data formou query. To bez problémů může ...
... serveru data formou query, což bez problémů může ...

  1. ... to bez problémů může a taky toho často využívá pro specifikaci... - Zde by se hodilo umístit větu vloženou, nebo závorku a také bych zaměnil "taky toho" za "čehož se také", protože toho nevyužívá ta metoda GET, ale vývojář, kterou danou metodu používá.

... to bez problémů může, čehož se také často využívá, pro specifikaci ...

BEFORE:
Jistě víte/tušíte o metodě GET, standardní http metoda, sloužící povětšinou k získávání dat ze serveru, samozřejmě to neznamená, že nemůže předávat serveru data formou query, to bez problémů může a taky toho často využívá pro specifikaci požadovaných dat.

AFTER:
Jistě víte o metodě GET, standardní http metodě, která slouží, povětšinou, k získávání dat ze serveru, což ale samozřejmě neznamená, že nemůže předávat serveru data formou query, což bez problémů může, čehož se také často využívá, pro specifikaci požadovaných dat.

(Pořád to není nic extra a já osobně bych to přepsal.)


Obecně platí pravidlo nepoužívat, a nesnažit se vytvářet, složitá souvětí, pokud na to nemáš cit, jelikož je poměrně náročné vždy vše ukočírovat tak, aby na sebe věty hezky pasovaly. Navíc se kratší a jednodušší souvětí čtou většině lidem lépe.

Editované 28.9.2015 16:28
Odpovedať
28.9.2015 16:25
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Odpovedá na Honza Bittner
Neaktivní uživatel:28.9.2015 17:48

Konstruktivní odpověď. Souhlasím, že většina mých souvětí je příliš komplikovaná, nicméně (!) nemyslím si, že nejsou správně, jak jsi dobře zmínil, je to věcí citu. První i druhý díl vznikaly v podstatě ve stejný čas, dřív než mi David N. naznačil, že bych se měl držet jednodušších konstrukcí. Jelikož takhle běžně mluvím, píšu (už od základky) není to pro mě snadné. Doufám proto, že se mnou budou mít čtenáři trpělivost, než všechno bude optimální. A pokud je to tady běžnou praxí, za čas upravím/zjednoduším větné konstrukce i u prvních dvou dílů.

No uznej - tohle vyjádření musí vést ke všeobecné spokojenosti ne? :)

Odpovedať
28.9.2015 17:48
Neaktivní uživatelský účet
Avatar
asoft
Člen
Avatar
asoft:2.10.2015 19:41

Skúšam to urobiť v ASP.NET MVC, ale som sa zasekol.

čo je kouzelnik.php?

xmlhttp.open("POST", "kouzelnik.php", true);

Ako to preklopiť na ASP.NET MVC:
a pár řádků kódu v PHP :

<?php
$attr = $_POST["param1"];
echo "Myslím, že číslo, které si myslíš je: ".$attr;
?>
 
Odpovedať
2.10.2015 19:41
Avatar
asoft
Člen
Avatar
Odpovedá na asoft
asoft:2.10.2015 20:25

Chybu mám už pri:

if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    // tento kód se provede v okamžiku navrácení hodnoty ze serveru
    document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}

U mna to if dáva false.
xmlhttp.readyState == 1
xmlhttp.status == 0

 
Odpovedať
2.10.2015 20:25
Avatar
Odpovedá na asoft
Neaktivní uživatel:2.10.2015 21:23

Ahoj, vtip je v tom, že xmlhttp.readyState se v čase mění - nabývá až hodnoty 4 a to je to, co se od něj čeká. Stejně tak status nabývá různých hodnot (pokud http požadavek na serveru nenalezne script kouzelnik.php tak ti třeba status vyhodí 404 - not found)

K tomu překlopení a k té chybě: kouzelnik.php je serverový script, který obdrží informace od klienta, právě pomocí ajaxu. Stačí když si přepíšeš to co chceš na serveru do ASP.NET MVC, v článku popisuju všechno co se na server posílá, takže by to neměl být problém. Nicméně musíš dát pozor na název nového scriptu. Pokud bude mít nový soubor příponu asp - musí ajax volat kouzelnik.asp, nebo script.asp nebo cokoliv.asp !

Ohledně té chyby, dej si před to tvoje zmiňované if tenhle kód :

alert(xmlhttp.readyState + xmlhttp.status);

Uvidíš jak se v čase bude měnit jejich obsah a podle toho poznáš kde je chyba.

PS: Pokud se nebude readyState postupně měnit ke čtyřce a status nebude nabývat hodnot 200, pak poznáš, že chyba nastala někde na serveru (server špatně odpovídá, serverový soubor nebyl nalezen a podobně).

Kdyby ještě něco nefungovalo, napiš.

Odpovedať
2.10.2015 21:23
Neaktivní uživatelský účet
Avatar
asoft
Člen
Avatar
asoft:3.10.2015 8:57

readyState už mám OK.

Chybu mám tu:

document.getElementById("txtHint").innerHTML = xmlhttp.responseText;

čo to je: txtHint.
nemal by to byť nejaký element na formulári ?

 
Odpovedať
3.10.2015 8:57
Avatar
Odpovedá na asoft
Neaktivní uživatel:3.10.2015 14:21

Díky za upozornění na věcnou chybu. místo "txtHint" tam napiš "magician" ... a já půjdu ihned tuhle záměnu napravit.

Odpovedať
3.10.2015 14:21
Neaktivní uživatelský účet
Avatar
asoft
Člen
Avatar
asoft:4.10.2015 10:20

Hurá, už mi to funguje v ASP.NET MVC.
Tu sa nerobí súbor kouzelnil.asp, ale sa to odohráva v napr: HomeController

Neviem prečo predanie parametru mi nefunguje cez: Request.QueryS­tring["param1"],
"param1" je null.

Funguje to cez predanie parametru "param1" v metode.

[HttpPost]
[ActionName("Index")]
public void Index_Post(string param1)
        {
            //var attr = Request.QueryString["param1"];
            Response.Write("Myslím, že číslo, ktoré si myslíš je: " + param1);
            return;
        }
 
Odpovedať
4.10.2015 10:20
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!