Autor Zpráva
houbeless
Profil
Zdravím,
mám funkční dialog s formulářem, u kterého chci k tlačítku přiřadit ajax .post, aby se mi data přenášela do funkce napozadí a nedošlo po provedení fce k refreshi stránky.
Zatím jsem to testoval jen v základním provedení tzn. nedynamické hodnoty jen pro test a po kliknutí se mi okno sice hezky uzavře ale do volané funkce se nepředá nic.
Koukám na to dobu a fakt nevím, poradil by mi prosím někdo ? :)

$(document).ready(function() {
    var $loading = $('<img src="loader.gif" alt="loading" class="loading">');
    var url = 'modules.php?name=neco&op=edit_save';
    var bin = { yes: 1, no: 0 };

    $('#form a').each(function() {
        var $dialog = $('<div></div>').append($loading.clone());
        var $link     = $(this).one('click', function() {
            $dialog.load($link.attr('href')).dialog({
                title: $link.attr('title'),
                modal: false,
                buttons: { "Uložit záznam": function() {
                                              $.post(url, { "test_a": bin.yes, "test_b": bin.no });
                                              $(this).dialog("close");}
                                            }
            });
        $link.click(function() {
            $dialog.dialog('open');
            return false;
        });
        return false;
        });
    });
});


díky moc
okolojsoucí
Profil
Zkoušel jsi se podívat do konzole zda-li ti něco nevypsala?
_es
Profil
houbeless:
Na prístup k vráteným dátam potrebuješ nejakú funkciu, ktorú predáš ako argument metóde jQuery.post: api.jquery.com/jQuery.post.
houbeless
Profil
[#2] okolojsoucí
jo pardon, zapomněl jsem připsat, že jsem to i testoval v chromním nástrojem pro vývojáře a žádnou chybu mi to nenapsalo..ani syntaxe ani jQuery..

Cílová funce je předána getem v url (edit_save) kde je jen nějaké print_r($_POST) nebo předané do session abych ho zachytil..
Mě $.post běžně funguje, nemám s předáním hodnot do jiné fce problém, ale nevím proč mi to nefunguje nabindované na button dialogu, proto v rámci testu předávám jen hodnoty 1,0 z bin pole.
A ty mi prostě do té funkce nejdou, nerozumim co je špatně..
Dokonce není ani po cestě v php nějaké header, abych refreshoval a vymáznul POST.
Jde jen o nahrazení klasického formuláře, který se místo na stráce zobrazuje v jQ dialogu..
_es
Profil
houbeless:
Cílová funce je předána getem v url (edit_save) kde je jen nějaké print_r($_POST)
Nejakou funkciou bola myslená nejaká funkcia v JavaScripte. V 13. riadku je odoslaný POST dotaz, no prehliadač odpoveď servera naň nijako nespracuje. Na to slúži práve tá funkcia, ktorú tam nikde nemáš. Alebo ťa odpoveď servera nezaujíma? Zistil si si, či je dotaz vôbec odoslaný? Rátaš s tým, že chvíľu trvá, než server dotaz spracuje? Nemáš chybu v PHP skripte?

$('#form a')
Prečo dávaš do formulára odkazy? Prečo by mali mať tie odkazy niečo spoločné s formulárom? Smerujú tie odkazy na nejaké adresy?
houbeless
Profil
$('#form a')“ je id tagu: <span id=\"form\"><a href=\"....

Nevim proč bych to řešil v js když mě to jak jsem psal funguje jinde v php. V tomto případě je funkce, kterou volám na serveru, viz ta url.

"Alebo ťa odpoveď servera nezaujíma?" - to nechápu

Ale zajímalo by mě co myslíš tim jak zjistit, že je dotaz odeslaný, myslíš z logu apache ?
_es
Profil
houbeless:
Máš to celé nejako chaotické, takže sa ťažko zisťuje, v čom robíš chybu, jeden príkaz robí veľa vecí, aby sa niekto v tých zátvorkách vyznal... Overili si si, že metódy jQuery, čo si použil, fungujú tak, ako chceš? Možno je príčina v Časté potíže, zajímavosti a poučné debaty » Uchování hodnot proměnných v anonymních funkcích — lexikální uzávěry (premenné $link a $dialog).

"Alebo ťa odpoveď servera nezaujíma?" - to nechápu
Nikde (v JS) nepracuješ s vrátenými dátami z modules.php. Ten PHP skript nemá žiaden výstup?

co myslíš tim jak zjistit, že je dotaz odeslaný
Že si to zistíš nejakými vývojárskymi nástrojmi prehliadača, alebo z nejakej analýzy sieťových dotazov.
houbeless
Profil
Neni to chaotické, dialog i post běžně fungují, akorát se zdá, že toto řešení dialogu znemožňuje kombinovanou funkci s post..
_es
Profil
houbeless [#8]:
Nie je dôvod, aby nefungovali dva za sebou idúce, navzájom sa neovplyvňujúce, príkazy. Chyba bude inde. Funguje ti správne PHP skript modules.php?

A z [#1] „ale do volané funkce se nepředá nic.“:
Ako vlastne zisťuješ, či sa niečo „predá“ alebo „nepredá“, keď odpoveď zo servera zo skriptu modules.php v prehliadači nijako nenačítaš?
houbeless
Profil
session_start();
$_SESSION['test'] = $_POST;
to jsem měl jak v modules, tak v té cílové funkci edit_save,
ve který si to pak můžu vypsat:
print_r($_SESSION); die();

zkoušel jsem to i s $.get a do sejšny se mi předá jen get=url ale nic navíc, proto si myslím, že to z jQ dialogu vůbec neodejde..
_es
Profil
houbeless:
ve který si to pak můžu vypsat:
print_r($_SESSION); die();
Čo z toho, že si to „vypíšeš“, keď to „vypísané“ nikde nepoužívaš?

A celý ten kód z [#1] je kde? Nedal si ho do modules.php?
houbeless
Profil
:) ježiš, jak nepoužíváš? k čemu by mi to bylo, v rámci testu potřebuju vidět že se mi ty hodnoty předaj, s omáčkou ted nebudu ztrácet čas, když ani nevim, že s to předá ...
pro test mi to bohatě stačí abych viděl že to tam šlo, pak už je snad jedno co s těma hodnotama dělám, ne? :D

ten js kod, je v samostatnym js skriptu, kterej se zavádí v headu stránky:
<script type="text/javascript" src="includes/js/dialog/dialog.js"></script>
_es
Profil
houbeless:
:) ježiš, jak nepoužíváš?
No a kde a kedy teda zisťuješ, čo sa do PHP skriptu modules.php v 13. riadku v [#1] odoslalo? Tvrdíš, že vraj ten PHP skript niečo „vypisuje“, ale kam? Lebo do prehliadača na stránke, kde je kód v [#1] sa to „vypísané“ nedostane. Možno by si mal dodať „živú“ukážku, aby bolo jasnejšie, kde je problém.
houbeless
Profil
OK, zkusim připravit ukázku pro nějaký ladící nastroj, možná to i sám uvidim, ale to ted nemám, na to potřebuju čas..díky

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: