Diskuze: Ajax, vrácení hodnoty z echa

JavaScript JavaScript Ajax, vrácení hodnoty z echa

Avatar
michales
Člen
Avatar
michales:

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):

Č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
Avatar
mayo505
Redaktor
Avatar
mayo505:

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:

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š
Redaktor
Avatar
Odpovídá na michales
Pavel Mareš:

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
Nechci být workoholik. Bohužel někdy musíme být tím, čím nechceme.
Avatar
mayo505
Redaktor
Avatar
Odpovídá na michales
mayo505:

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:

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
Redaktor
Avatar
Odpovídá na michales
mayo505:

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:

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
Redaktor
Avatar
mayo505:

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:

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
Redaktor
Avatar
Odpovídá na michales
mayo505:

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:

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
Redaktor
Avatar
mayo505:

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:

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
Redaktor
Avatar
Odpovídá na michales
mayo505:

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:

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.