Diskuze: Ajax a přijímání dat

PHP PHP Ajax a přijímání dat American English version English version

Avatar
IT Man
Redaktor
Avatar
IT Man:

Zdravím zdejší komunitu,
hned na úvod bych rád uvedl, že jsem si nebyl jist, kam zařadím toto vlákno, protože se to týká Ajaxu ale i PHP. Další zapeklitý případ ... :D

Mám tento problém: odesílám si data přes Ajax do PHP. Kód Ajaxu vypadá následovně:

$.ajax({
    url: document.URL.endsWith("/") ? document.URL : document.URL + '/',
    type: 'post',
    data: { prevedeno: $("textarea").val() }
});
// Důvod odesílání dat přes Ajax? V JS provádím převod BBCode do HTML přes metodu editoru.

Data se v pohodě odesílají (viz. obrázek).

Formulář má (zjednodušeně) následující podobu:

<form method="post">
    <textarea name="obsah"></textarea>
    <input type="submit" name="ulozit" value="Uložit text" />
</form>

Zpracování v PHP je však oříšek. Pokud to zpracuji nějak takto:

if($_POST['ulozit'])
{
    $this->obsah = $_POST['prevedeno'];
    // Další zpracování apod.
}

funkce die() nic nevypíše.

Předem děkuji za všechnu pomoc. :)

Odpovědět 5.7.2015 17:59
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Odpovídá na IT Man
Martin Konečný (pavelco1998):

Nejsem si jistý, ale nevrací ti selektor $("textarea") seznam elementů? Zkus jí dát ID a použít $("#idTextare­a").val()

 
Nahoru Odpovědět 5.7.2015 18:29
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Martin Konečný (pavelco1998)
IT Man:

Výsledek je úplně stejný. V prohlížeči ty data jsou, ale jakmile to chci zpracovat v PHP, nejde to.

$.ajax({
     url: document.URL.endsWith("/") ? document.URL : document.URL + '/',
     type: 'post',
     data: { prevedeno: $("textarea[name='obsah']").val() }
 });
Nahoru Odpovědět 5.7.2015 18:33
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Fredep
Redaktor
Avatar
Odpovídá na IT Man
Fredep:

Neměl bys ještě do toho data: { ... } přiřadit i klíč ulozit, když na to máš podmínku v php?

$.ajax({
     url: document.URL.endsWith("/") ? document.URL : document.URL + '/',
     type: 'post',
     data: { prevedeno: $("#konkretni_textarea").val(), ulozit: true }
 });
 // Důvod odesílání dat přes Ajax? V JS provádím převod BBCode do HTML přes metodu editoru.
Nahoru Odpovědět 5.7.2015 18:37
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Dominik Gavrecký:

Len taká technická otázka. Nemal by si správne použiť:

if(isset($_POST['ulozit']))
 {
     $this->obsah = $_POST['prevedeno'];
     // Další zpracování apod.
 }
Nahoru Odpovědět 5.7.2015 18:41
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Fredep
IT Man:

Nepomohlo. PHP opět nic nezpracuje, ale v prohlížeči se to ulozit s hodnotou true objevilo.

Dominik Gavrecký: to tam mám. Já jen že tam mám poznámky apod., takže jsem to radši napsal ručně, než abych to kopíroval a nějaké věci mazal. Ale je to tam tak. :)

Editováno 5.7.2015 18:44
Nahoru Odpovědět  +1 5.7.2015 18:44
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Fredep
Redaktor
Avatar
Odpovídá na IT Man
Fredep:

Nemělo by být type: 'post', ale method: "POST".

Nahoru Odpovědět 5.7.2015 18:49
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Fredep
IT Man:

Ani to nepomohlo. :(
//EDIT: Výsledek úplně stejný.

Editováno 5.7.2015 18:55
Nahoru Odpovědět 5.7.2015 18:54
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Richard
Člen
Avatar
Richard:

A co by die() mělo vypsat? Ani v tom kódu ji nikde nevidím.
Jak první si var_dumpni přijatý data, pak uvidíme co s tím dál.

Nahoru Odpovědět 5.7.2015 19:04
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Richard
IT Man:
array(4) { ["nadpis"]=> string(28) "Novinka, která krade údaje" ["url"]=> string(25) "novinka-ktera-krade-udaje" ["obsah"]=> string(21) ":):)Nice :D[b]aaa[/b]" ["ulozit"]=> string(15) "Uložit novinku" }

die() mám na testování. To je hned za tím přiřazením proměnné.

Nahoru Odpovědět 5.7.2015 19:06
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Fredep
Redaktor
Avatar
Odpovídá na IT Man
Fredep:

Nějak tu nevidím to prevedeno, máš tu jen obsah.

Nahoru Odpovědět 5.7.2015 19:08
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Richard
Člen
Avatar
Odpovídá na IT Man
Richard:

Takže už je vše jasné ne? :-)

Nahoru Odpovědět 5.7.2015 19:09
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Fredep
IT Man:

obsah je normálně to poslané. provedeno má být to upravené. A koukám, že to tam není. Ale nevím, kde je problém.

Richard: Někde je problém v posílání ... :D

Editováno 5.7.2015 19:11
Nahoru Odpovědět 5.7.2015 19:10
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Richard
Člen
Avatar
Odpovídá na IT Man
Richard:

Uff začínám se v tom ztrácet :-D
Pošli kompletní kód, ať se v tom dá trochu vyznat :-)

Nahoru Odpovědět  +1 5.7.2015 19:12
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Richard
Člen
Avatar
Richard:

Takže počkat, ty v tý textaree vezmeš ten text a projedeš ho nějakou funkcí na převod čehosi..

A výstup tý funkce je kde? Ukládá se zpátky do textarei, nebo kam?

Nahoru Odpovědět 5.7.2015 19:14
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Richard
IT Man:

Ten se má poslat právě že do PHP.

$("form").submit(function() {
    $.ajax({
        url: document.URL,
        type: "POST",
        data: { prevedeno: $("textarea[name='obsah']").sceditor('instance').fromBBCode($("textarea[name='obsah']").val()) }
    });
});
Nahoru Odpovědět 5.7.2015 19:17
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Richard
Člen
Avatar
Odpovídá na IT Man
Richard:

A jsi si jistý že z toho kódu leze to co chceš? console.logni si to pro jistotu

Nahoru Odpovědět 5.7.2015 19:19
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.