2012-10-15 19 views
10

मैं Asp.Net में 'नई' WebAPI के साथ संघर्ष कर रहा हूँ ...पोस्ट करना JSON

मैं बस कुछ Json पोस्ट करना चाहते हैं, लेकिन यह मेरे डेटा deserializing नहीं है ... क्या मैं गलत कर रहा हूँ apicontroller को ?!

नियंत्रक वर्ग

public class UtilityController : ApiController 
    { 
     [HttpPost] 
     public string Bla(Bla bla) 
     { 
      return "bla"; 
     } 
    } 

Bla कक्षा:

public class Bla 
    { 
     public string Een { get; set; } 
     public string Twee { get; set; } 
    } 

एपीआई config:

 

    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{Action}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 

प्रकाशित किया गया था डेटा:

 

    var bla = $.parseJSON('{"Een":"UNO","Twee":"DUE"}'); 
    $.ajax({ 
    type: "POST", 
    url: "/api/utility/Bla", 
    data: {Bla : bla}, 
    dataType: "json" 
    }).done(function(msg) { 
    alert("Data Saved: " + msg); 
    }); 

उत्तर

22

क्या हूँ मैं गलत Doeing!

आप एक JSON अनुरोध नहीं भेज रहे हैं। आप application/x-www-form-urlencoded अनुरोध भेज रहे हैं।

तो सुनिश्चित करें कि आप एक वास्तविक JSON अनुरोध भेज रहे हैं:

var bla = { "Een": "UNO", "Twee": "DUE"}; 
$.ajax({ 
    type: 'POST', 
    url: '/api/utility/Bla', 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify(bla), 
}).done(function(msg) { 
    alert("Data Saved: " + msg); 
}); 

सूचना कैसे मैं application/json करने के लिए सही contentType हैडर की स्थापना की है, मैं कैसे JSON.stringify पद्धति का उपयोग किया एक असली JSON अनुरोध भेजने के लिए और मैं बेकार dataType: 'json' पैरामीटर से कैसे छुटकारा पा रहा हूं जो jQuery स्वचालित रूप से सामग्री-प्रकार प्रतिक्रिया शीर्षलेख से सर्वर को भेजता है जो स्वचालित रूप से सक्षम करने में सक्षम है।

+0

JSON.stringify (bla) -> काम करता है :-D –

+0

अब अगर $। पोस्ट में केवल यह कहने का तरीका था कि आप JSON भेजना चाहते हैं और urlencoded डेटा नहीं बनाना चाहते हैं, तो सबकुछ ग्रेवी होगा। – crush

-1

आप इस लाइन को बदलने की कोशिश कर सकते हैं:

data: {Bla : bla}, 
इस के लिए

:

data: bla, 
+1

नियंत्रक में भी अशक्त की, लेकिन जे एस क्लीनर लग रहा है; टीएनएक्स –

+1

टिप्पणी, उत्तर नहीं। – Puppy

0

bla पैरामीटर अपने पोस्ट पद्धति पर [ModelBinder] के साथ टैग करना पड़ सकता है:

[HttpPost] 
public string Bla([ModelBinder]Bla bla) 
{ 
    return "bla"; 
} 
+0

https://dl.dropbox.com/u/20077570/Clipboard01.png अभी भी कुछ भी नहीं –

+0

मुझे सच में लगता है कि त्रुटि वेबपी के deserialization में है ... –

संबंधित मुद्दे