2010-08-03 1 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" 
}); 

Ich versuche, über diesen Code in einer ASHX Datei geschrieben JSON-Daten auf Server-Seite abzurufen:Wie abzurufen JSON über ASP.Net context.Request

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

aber immer null zurück. Was mache ich falsch?

+1

Ich würde dazu neigen, es zu einer Web-Methode zu schreiben auf eine .asmx-Datei und ziehen Sie den Parameter aus dem Webmethod-Objekt, anstatt einen Aschx zu verwenden. –

Antwort

-1

Request [] wird nur auf form params und quetystring schauen. Sie müssen ein Formular posten oder qs verwenden oder den Anfragetext selbst analysieren.

-2

Ich denke, Sie könnten die Anfrage Körper aus HttpCurrent.Context.Request.GetResponse().

Es ist wahrscheinlich eine gute Idee, den Content-Type-Header zuerst zu überprüfen.

11

Graben der Internet. Ich habe herausgefunden, dass IE Probleme hat, die POST-Anfrage vollständig zu erhalten. @ ronaldwidhas Vorschlag zu InputStream ähnelt dem, was ich gefunden habe. Aber anstatt mit JavaScriptSerializer ich JSON.NET-Code-Schnipsel unten ist, und ich hoffe, dass diese andere helfen würde, mit ähnlichem Problem

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

Ich bin mir nicht sicher, ob Sie vorschlagen, dass @ Ronaldwidhas Vorschlag nicht IE-kompatibel ist? Verwenden Sie deshalb JSON.NET? Oder ist es nur Vorliebe? – JDandChips