Oggi ho riscontrato un comportamento un po' anomalo utilizzando Jquery con pagine ASHX e Internet Explorer. In pratica nel caso in cui "impacchettate" una richiesta ajax specificando "POST" come modalità di trasferimento dati:
jQuery.ajax
({
type: "POST",
url: "Handler1.ashx",
beforeSend: function() { alert("beforeSend"); },
complete: function() { alert("complete"); },
data: 'Text1:A2',
dataType: "html",
error: function(xhr, status, errorThrown) {
//alert(errorThrown + '\n' + status + '\n' + xhr.statusText);
alert(xhr.status);
},
success: function(data) {
$("#divCont").html(data);
alert("success");
}
});
}
eseguendo l'invio, come risposta ci sono buone probabilità che venga ritornato un errore
(
n. 1203x: ERROR_INTERNET_CONNECTION_ABORTED).
Ecco il codice presente nella pagina ashx:
public void ProcessRequest(HttpContext context)
{
string x = @"<div>Lorem ipsum dolor sit amet, [testo mooooolto lungo...]" + a + "</div>";
context.Response.ContentType = "text/plain";
context.Response.Write(x);
context.Response.Flush();
}
La soluzione:
public void ProcessRequest(HttpContext context)
{
string postedVar ="";
if (context.Request.Form.Count > 0)
{
postedVar = context.Request.Form["Text1"];
}
string x = @"<div>Lorem ipsum dolor sit amet, [testo mooooolto lungo...]" + a + "</div>";
context.Response.ContentType = "text/plain";
context.Response.Write(x);
context.Response.Flush();
}
In pratica va forzata la lettura delle variabili postate (se presenti).