2010-08-03 6 views
14
के माध्यम से JSON पुनः प्राप्त करने के
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" 
}); 

मैं इस कोड के माध्यम से एक ashx फ़ाइल में सर्वर साइड पर तैनात JSON डेटा प्राप्त करने का प्रयास कर रहा हूँ:कैसे ASP.Net context.Request

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

लेकिन यह हमेशा अशक्त लौट आते हैं। मैं क्या गलत कर रहा हूं?

+1

मैं इसे एक वेब विधि के लिए पर पोस्ट करने के लिए जाते हैं एक .asmx फ़ाइल और एएसएक्स का उपयोग करने के बजाय वेबमाइंड की ऑब्जेक्ट से पैरामीटर खींचें। –

उत्तर

13
  1. अनुरोध निकाय को HttpContext.Current.Request.InputStream से प्राप्त करें।
  2. इनपुट स्ट्रीम पढ़ें और उपयोग javascriptserializer स्ट्रिंग के लिए
  3. परिवर्तित एक वस्तु दृढ़ता से टाइप करने के लिए json वस्तु (सुनिश्चित json गुण दृढ़ता से टाइप काउंटर भाग के रूप में एक ही नाम)
-1

अनुरोध [] केवल फॉर्म पैरा और quetystring देखेंगे। आपको एक फॉर्म पोस्ट करना होगा या qs का उपयोग करना होगा या अनुरोध निकाय स्वयं को पार्स करना होगा।

-2

मुझे लगता है कि आप HttpCurrent.Context.Request.GetResponse से बाहर अनुरोध शरीर मिल सकता है()।

शायद सामग्री-प्रकार शीर्षलेख को सत्यापित करने के लिए शायद यह एक अच्छा विचार है।

11

खुदाई deserialize करने के लिए इंटरनेट। मुझे पता चला कि आईई को पूरी तरह से POST अनुरोध प्राप्त करने में समस्या है। इनपुटस्ट्रीम पर @ रोनाल्डविधा का सुझाव जो मैंने पाया है उसके समान है। बल्कि javascriptserializer का उपयोग करने से मैं JSON.NET कोड स्निपेट का उपयोग नीचे जाता है और मुझे आशा है कि यह समान समस्या के साथ अन्य मदद मिलेगी

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

मुझे यकीन नहीं है कि क्या आपका सुझाव है कि @ रोनाल्डविधा का सुझाव आईई संगत नहीं है? क्या आप JSON.NET का उपयोग क्यों करते हैं? या यह सिर्फ वरीयता है? – JDandChips