Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Ajax, vrácení hodnoty z echa

Aktivity
Avatar
michales
Člen
Avatar
michales:29.9.2014 20:29

Zdravím,
chtěl bych poprosit o úpravu ajaxu.
Mám tento formulář+ajax:

<form id="userForm">
<input type="hidden" value="<?php echo $result['Web']; ?>" name="kontrola">
<input type='submit' value='Submit' />
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js "></script>
<script>
$(document).ready(function(){
    $('#userForm').submit(function(){

        $.ajax({
            type: 'POST',
            url: 'kontrola.php',
            data: $(this).serialize()
        })
        return false;

    });
});
</script>

A následný php soubor, kontrola.php:

$url = @$_POST['kontrola'];
if ($url == ""){
echo "Invalid URL(s)";
} else {
$url = trim($url);
$url = explode(" ", $url);
$url = implode("\n", $url);
$url = explode("\n", $url);
$url = array_unique($url);

foreach ($url as $urls){
$rsurls = @file_get_contents($urls);
if (preg_match("/#download/", $rsurls)){
$pos1 = strpos($rsurls,">| ");
$pos2 = strpos($rsurls," KB");
echo substr($rsurls)." ";
echo '<img width="20" src="/img/Valid.png"> ';
} else {
echo '<img width="20" src="/img/Dead.png"> ';

}
}
}

Já vrátit ajaxem výsledek toho echa v php souboru?
Podotýkám že s javascriptem vůbec neumím.
Díky za pomoc.

Odpovědět
29.9.2014 20:29
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
Odpovídá na michales
Martin Konečný (pavelco1998):29.9.2014 20:32

Čus,

z hlavy ti neporadím, ale zkus se podívat na funkci done() nebo complete() nebo tak něco.
Víc podrobností určitě najdeš na http://api.jquery.com/jquery.ajax/.

Nahoru Odpovědět
29.9.2014 20:32
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
mayo505
Tvůrce
Avatar
mayo505:29.9.2014 22:27

síce som tvoju otázku nepochopil (skús ju sformulovať syntakticky správne), ale keď chceš získané dáta zo serveru nejako využiť pomocou javascriptu tak vo funkcii $.ajax pridaj riadok "success" : funkcia

$.ajax({
    type: 'POST',
    url: 'kontrola.php',
    data: $(this).serialize()
    success: function(data) {
        // spracuj data
    }
    error: function(data) {
        // toto sa spustí keď na servery vrátiš napríklad false
    }
})
 
Nahoru Odpovědět
29.9.2014 22:27
Avatar
michales
Člen
Avatar
michales:30.9.2014 4:24

Upřesním to, potřebuji vrátit výsledek php scriptu, tzn.:

echo '<img width="20" src="/img/Valid.png"> ';
} else {
echo '<img width="20" src="/img/Dead.png"> ';
Nahoru Odpovědět
30.9.2014 4:24
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
Pavel Mareš
Tvůrce
Avatar
Odpovídá na michales
Pavel Mareš:30.9.2014 7:28

Já používám u pár projektů toto a když chceš pouze výpis, tak to stačí.

$.post('cesta/k/php/souboru', {
        data: $(this).serialize(),
        function(result) {
                //tu jde výsledek z php souboru
});

Nejsem si jist tím data řádkem, jelikož to nepoužívám, ale takhle ti vyhodí, co potřebuješ.

Editováno 30.9.2014 7:29
Nahoru Odpovědět
30.9.2014 7:28
Však ono půjde ...
Avatar
mayo505
Tvůrce
Avatar
Odpovídá na michales
mayo505:30.9.2014 14:56

Keď sa pýtaš na php kód tak nechápem prečo si to napísal do fóra s javascriptom, ale nevidím v tvojom kóde problém. Možno skús namiesto echa to vracať cez return.

Keď sa pýtaš na javascript tak na to som ti už odpovedal. V tej funkcii success spracuj tie data, ktoré sú ako parameter tej funkcie. Mohlo by to vyzerať napríklad takto:

success: function(data) {
   $("#miesto-pre-obrazok").append(data);
}
Editováno 30.9.2014 14:58
 
Nahoru Odpovědět
30.9.2014 14:56
Avatar
michales
Člen
Avatar
Odpovídá na mayo505
michales:30.9.2014 15:06

Já nevím co dělám zle, je to asi tím že z JS neumím.
S php problém není. Je to tím JS.
Nyní to mám takto:

<form id="userForm">
<input type="hidden" value="<?php echo $result['Web']; ?>" name="kontrola">
<input type='submit' value='Submit' />
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js "></script>
<script>
$(document).ready(function(){
    $('#userForm').submit(function(){

        $.ajax({
            type: 'POST',
            url: 'kontrola.php',
            data: $(this).serialize()
            success: function(data) {
   $("#miesto-pre-obrazok").append(data);
}
        })
        return false;

    });
});
</script>

Ale ne jen že to nevypíše to echo z php ale ještě to navíc refreshne stránku a přidá to do url v adresním řádku ještě obsah

<input type="hidden" value="<?php echo $result['Web']; ?>" name="kontrola">

Prosím Vás jak to tedy mám mít správně abych odeslal ten form, bez refreshe stránky se zpracoval php a ukázal se výsledek z php z určitého echa podle výsledku.
Děkuji za polopatickou odpověď protože já jsem nyní úplně mimo.

Editováno 30.9.2014 15:09
Nahoru Odpovědět
30.9.2014 15:06
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
mayo505
Tvůrce
Avatar
Odpovídá na michales
mayo505:30.9.2014 15:20

Skús takto

<form id="userForm">
 <input type="hidden" value="<?php echo $result['Web']; ?>" name="kontrola">
 <input type='submit' value='Submit' />
 </form>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js "></script>
 <script>
 $(document).ready(function(){
     $('#userForm').submit(function(event){
         event.preventDefault();
         $.ajax({
             type: 'POST',
             url: 'kontrola.php',
             data: $(this).serialize()
             success: function(data) {
                 alert(data) // Vypíše data zo serveru do vyskakovacieho okna
             }
         })
         return false;

     });
 });
 </script>
 
Nahoru Odpovědět
30.9.2014 15:20
Avatar
michales
Člen
Avatar
Odpovídá na mayo505
michales:30.9.2014 15:28

Tak zde je možné zkusit: http://country.funsite.cz/zobraz_link.php?…

Použil jsem přesně to co si mi napsal:

<form id="userForm">
 <input type="hidden" value="<?php echo $result['Web']; ?>" name="kontrola">
 <input type='submit' value='Submit' />
 </form>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js "></script>
 <script>
 $(document).ready(function(){
     $('#userForm').submit(function(event){
         event.preventDefault();
         $.ajax({
             type: 'POST',
             url: 'kontrola.php',
             data: $(this).serialize()
             success: function(data) {
                 alert(data) // Vypíše data zo serveru do vyskakovacieho okna
             }
         })
         return false;

     });
 });
 </script>
Nahoru Odpovědět
30.9.2014 15:28
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
mayo505
Tvůrce
Avatar
mayo505:30.9.2014 15:35

veď tam máš 10 formulárov s rovnakým ID a desať totožných skriptov :D Neviem ako sa to správa v takomto prípade ale určite nie ako očakávaš :D Uprav si to aby mali rovnakú triedu a nie ID a urob len jeden skript

 
Nahoru Odpovědět
30.9.2014 15:35
Avatar
michales
Člen
Avatar
Odpovídá na mayo505
michales:30.9.2014 15:36

Tak teď to nechápu vůbec.

Nahoru Odpovědět
30.9.2014 15:36
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
mayo505
Tvůrce
Avatar
Odpovídá na michales
mayo505:30.9.2014 15:41

ako to, že nie ... vyzerá to tak, že v php máš nejaký cyklus ktorým vypisuješ albumy a pre každý jeden album vypíšeš aj formulár + skript

 
Nahoru Odpovědět
30.9.2014 15:41
Avatar
michales
Člen
Avatar
michales:30.9.2014 15:43

a takto to mám ne? Ve formuláři se pak mění jen

<?php echo $result['Web']; ?>

Takže pro každé album je každý formulář jiný. Nevím jak jinak vyřešit aby byl formulář pro každé album jiný.

Nahoru Odpovědět
30.9.2014 15:43
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
mayo505
Tvůrce
Avatar
mayo505:30.9.2014 15:50

No veď a to je zle, že to tak máš, veď nebudeš robiť pre každý formulár jeden skript
Nieje to ideálne ale formulár môžeš mať rôzny pre každé len im daj rôzne id, a skript urob jeden pre celú stránku.

Inak tá stránka je celá divná, kukni aký pozdrav som ti tam nechal :)

 
Nahoru Odpovědět
30.9.2014 15:50
Avatar
michales
Člen
Avatar
michales:30.9.2014 15:57

Jo já si všiml pozdravu.
Ale s tím formem stejně nevím jak a s javascriptem po té už vůbec.
Holt budu muset tuto operaci vynechat

Nahoru Odpovědět
30.9.2014 15:57
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
mayo505
Tvůrce
Avatar
Odpovídá na michales
mayo505:30.9.2014 16:08

Ale to máš problém v php a nie javascriptu, že to vypisuješ 10x ... ani nechápem prečo vypisuješ skript v php niekde v cykle
Celkovo je to zle ... máš tam SQL Injection aj XSS ešte aj chyby vypisuješ, keby sa mi chcelo tak sa s tým pobavím viac :D

 
Nahoru Odpovědět
30.9.2014 16:08
Avatar
michales
Člen
Avatar
michales:30.9.2014 16:21

njn lépe to neumím.
Chat jsem myslím zabezpečil.

Nahoru Odpovědět
30.9.2014 16:21
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
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.