2010-08-03 29 views
14
var OrderInfo = {"ProductID": 
    "ProductIDValue", 
    "ProductName": "ProductName", 
    "Quantity": 1, 
    "Amount": 9999, 
    "SLQuantity": 9999, 
    "SLDate": "08/03/2010" 
}; 

var DTO = { 'OrderInfo': OrderInfo }; 
$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "JasonHandler.ashx", 
    data: JSON.stringify(DTO), 
    dataType: "json" 
}); 

Estoy tratando de recuperar los datos JSON sobres su lado del servidor en un archivo ASHX a través de este código:Como recuperar JSON a través de ASP.Net context.Request

string strrequest = context.Request["OrderInfo"]; 

pero siempre devuelve null. ¿Qué estoy haciendo mal?

+1

yo tendería a publicarla en un método web en un archivo .asmx y extraiga el parámetro del objeto webmethod, en lugar de usar un ashx. –

Respuesta

-1

La solicitud [] solo se verá en form params y quetystring. Tendrá que hacer una publicación de formulario o usar qs o analizar el cuerpo de la solicitud usted mismo.

-2

Creo que podría obtener el cuerpo de la solicitud de HttpCurrent.Context.Request.GetResponse().

Probablemente sea una buena idea verificar primero el encabezado de tipo de contenido.

11

Excavar el Internet. Descubrí que IE tiene problemas para recibir la solicitud POST por completo. La sugerencia de @ ronaldwidha en InputStream es similar a lo que he encontrado. Pero en lugar de utilizar JavaScriptSerializer utilizo fragmentos de código JSON.NET está por debajo y espero que esto ayudaría a otros con problemas similares

public class JasonHandler : IHttpHandler { 

public void ProcessRequest (HttpContext context) { 

    context.Response.ContentType = "application/json"; 
    context.Response.ContentEncoding = Encoding.UTF8; 

    System.IO.Stream body = context.Request.InputStream; 
    System.Text.Encoding encoding = context.Request.ContentEncoding; 
    System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding); 
    if (context.Request.ContentType != null) 
    { 
     context.Response.Write("Client data content type " + context.Request.ContentType); 
    } 
    string s = reader.ReadToEnd(); 
    string[] content = s.Split('&'); 
    for (int i = 0; i < content.Length; i++) 
    { 
     string[] fields = content[i].Split('='); 
     //context.Response.Write("<div><strong>" + fields[0] + "</strong></div>"); 
     //context.Response.Write("<div>" + fields[1] + "</div> "); 
    } 

    string jsonRecord = s; 
    } 
} 
+0

No estoy seguro si sugieres que la sugerencia de @ ronaldwidha no es compatible con IE? ¿Es por eso que usas JSON.NET? ¿O es solo preferencia? – JDandChips

Cuestiones relacionadas