NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Jan Lupčík
Tvůrce
Avatar
Jan Lupčík:5.7.2015 17:59

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
TruckersMP vývojář
Avatar
Odpovídá na Jan Lupčík
Martin Konečný (pavelco1998):5.7.2015 18:29

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
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Lupčík:5.7.2015 18:33

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
TruckersMP vývojář
Avatar
Odpovídá na Jan Lupčík
Neaktivní uživatel:5.7.2015 18:37

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
Neaktivní uživatelský účet
Avatar
Dominik Gavrecký:5.7.2015 18:41

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
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Lupčík:5.7.2015 18:44

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
5.7.2015 18:44
TruckersMP vývojář
Avatar
Odpovídá na Jan Lupčík
Neaktivní uživatel:5.7.2015 18:49

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

Nahoru Odpovědět
5.7.2015 18:49
Neaktivní uživatelský účet
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Lupčík:5.7.2015 18:54

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

Editováno 5.7.2015 18:55
Nahoru Odpovědět
5.7.2015 18:54
TruckersMP vývojář
Avatar
Richard
Člen
Avatar
Richard:5.7.2015 19:04

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
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Richard
Jan Lupčík:5.7.2015 19:06
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
TruckersMP vývojář
Avatar
Odpovídá na Jan Lupčík
Neaktivní uživatel:5.7.2015 19:08

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

Nahoru Odpovědět
5.7.2015 19:08
Neaktivní uživatelský účet
Avatar
Richard
Člen
Avatar
Odpovídá na Jan Lupčík
Richard:5.7.2015 19:09

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
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Lupčík:5.7.2015 19:10

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
TruckersMP vývojář
Avatar
Richard
Člen
Avatar
Odpovídá na Jan Lupčík
Richard:5.7.2015 19:12

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
5.7.2015 19:12
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Richard
Člen
Avatar
Richard:5.7.2015 19:14

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
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Richard
Jan Lupčík:5.7.2015 19:17

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
TruckersMP vývojář
Avatar
Richard
Člen
Avatar
Odpovídá na Jan Lupčík
Richard:5.7.2015 19:19

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.