ho un problema che non riesco a capire.
ho un applicazione che invia email tramite ajax-php; da un normale form html prelevo i dati tramite javascript, li codifico con la funzione encodeURIComponent e li inserisco nel corpo di una richiesta post creata con ajax.
questo più o meno il codice:
invia.htm
Codice PHP:
<form action="#">
<input accesskey="B" name="_nome" tabindex="10" type="text" size="40" maxlength="40" title="AccessKey B, TabIndex 10 || Inserire il nome" />
<textarea accesskey="Q" name="_testo" tabindex="15" rows="10" cols="60" title="AccessKey Q, TabIndex 15 || Inserire il testo dell'email"></textarea>
......
</form>
invia.js
Codice PHP:
for (var i=0;i<datiEmail.length;i++)
{
var dato=encodeURIComponent(datiEmail[i]);
dato+="=";
dato+=encodeURIComponent(datiEmail[i].value);
body.push(dato);
}
return body.join("&");
.....
var xmlhttp=creaOggettoXMLHttp();
xmlhttp.open("post","invia.php",true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
else
{
alert("Errore durante l'invio del messaggio(" + xmlhttp.statusText + ").";
}
}
};
xmlhttp.send(body);
invia.php
Codice PHP:
header("Content-Type: text/plain;");
.....
recupero i dati da $_POST[]
.....
mail("$destinatario","$oggetto","$messaggio","$headers");
......
il problema:
se nella textarea c'è un ritorno a capo la funzione mail() di php genera un errore. se invece nella textarea c'è di tutto tranne dei ritorno a capo, tutto funziona perfettamente.
con un alert sulla variabile condificata tramite encodeURIComponent() il ritorno a capo lo codifica con "%0A".
aiuto....