2010-03-10

JQuery, Ashx e Internet Explorer

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

Nessun commento:

Posta un commento