Autor Zpráva
cenek
Profil
Ahoj,

Posílám data z formuláře přes ajax pomocí serialize do php souboru, který ho odešle na e-mail.

Vypadá to nějak takhle:
var data = $('form').serialize();

        $.ajax({
            url: "request.php",    
            type: "GET",
                         data: data,
            success: function (html) {                
                if (html==0) {                                    
                    $('#msg').html('Odeslano.').addClass('successMsg');
                } else alert('Chyba.');                
            }
        });

v PHP pak zpracovamam pres foreach
if ($_SERVER['REQUEST_METHOD'] == "GET") {
        foreach ($_GET as $key => $value) {
        $msg .= "<tr><td width='110'><strong>" . ucfirst ($key) ."</strong></td><td>" .$value."</td></tr>"; 
        }
      }  

To funguje. Ale problém je, že ve formuláři jsou i checkboxy, který ve výsledku vyhodí Array.
Fungovalo to akorát tak, že jsem v PHP použil json_encode, ale to je taková piplačka vyladit kódování že to nejde. Potřebuju ty hodnoty seřadit přímo v tom JS

Díky
Jan Tvrdík
Profil
cenek:
Jak vypadá HTML toho formuláře? (konkrétně ty checkboxy)
cenek
Profil
Například takto
<input type="checkbox" name="operation[]" value="Praha">
        <label>&nbsp; Praha</label>
Jan Tvrdík
Profil
cenek:
Checkboxy musí mít různá jména, tedy např. Nemusí, tak dlouho nepracuji se surovými formuláři, že zapomínám jak to PHP zpracovává :)
<input type="checkbox" name="operation[1]" value="Praha">
<input type="checkbox" name="operation[2]" value="Brno">

A PHP pak můžeš upravit takto:
foreach ($_GET as $key => $value) {
    if (is_array($value)) $value = implode(', ', $value);
    $msg .= "<tr><td width='110'><strong>" . ucfirst ($key) ."</strong></td><td>" .$value."</td></tr>"; 
}
Není to úplně bezpečné, ale snad ti to tak bude stačit.
cenek
Profil
Perfekt! Funguje... Díky moc
Jan Tvrdík
Profil
Alespoň tu XSS zranitelnost by asi bylo záhodno opravit.

foreach ($_GET as $key => $value) {
    if (is_array($value)) $value = implode(', ', $value);
    $msg .= "<tr><td width='110'><strong>" . ucfirst (htmlspecialchars($key)) ."</strong></td><td>" . htmlspecialchars($value) . "</td></tr>"; 
}

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: