2011-12-16 23 views
7

के साथ रीस्टफुल डब्ल्यूसीएफ को पोस्ट अनुरोध भेजना मैंने jQuery से रीस्टफुल डब्ल्यूसीएफ को पोस्ट अनुरोध भेजने का अनुरोध भेजने के लिए हर संयोजन की कोशिश की है।जेसन

क्या कोई इसका अनुकरण कर सकता है और इसे काम कर सकता है। कोड यहां है: http://pastebin.com/Ua97919C

मैं पिछले 2 वर्षों से डब्ल्यूसीएफ के साथ काम कर रहा हूं, लेकिन हर बार जब मैं एक POST अनुरोध भेजता हूं तो यह मुझे बहुत संघर्ष करता है।

मैं इसे पिछले 4 दिनों से काम करने के लिए संघर्ष कर रहा हूं और कम से कम 35-40 पदों से गुजर रहा हूं।

आखिरकार, यह अनुरोध आईफोन से डब्ल्यूसीएफ में भेजा जाएगा।

जब मैं इसे फिडलर के साथ जांचता हूं तो त्रुटि अधिकतर होती है: * सर्वर को अनुरोध को संसाधित करने में त्रुटि आई। अपवाद संदेश है 'आने वाले संदेश में एक अप्रत्याशित संदेश प्रारूप' रॉ 'है। ऑपरेशन के लिए अपेक्षित संदेश प्रारूप 'एक्सएमएल', 'जेसन' हैं। ऐसा इसलिए हो सकता है क्योंकि वेबकंटेंट टाइपपेपर को बाइंडिंग पर कॉन्फ़िगर नहीं किया गया है। अधिक जानकारी के लिए WebContentTypeMapper के दस्तावेज़ देखें। '। अधिक जानकारी के लिए सर्वर लॉग देखें। अपवाद स्टैक ट्रेस है:

पर
System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message message, Object[] parameters) 
    at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters) 
    at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc) 
    at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) 
    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) 
    at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) 

उत्तर

4

निम्नलिखित

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
    if (HttpContext.Current.Request.HttpMethod == "OPTIONS") 
    { 
     HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache"); 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST"); 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept"); 
     HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000"); 
     HttpContext.Current.Response.End(); 
    } 
} 

एक और बात chnage dataType:'text'

$.ajax({ 
    type: "POST", 
    url: "http://localhost:4638/Edulink.svc/SaveUserData",       
    dataType: "text", 
    contentType: "application/json", 
    data:'{"EmailID":"praveen", "LevelID": 1}',   
    success:function(data, status) {    
     console.log(data); //gives 1     
    }, 
    error:function(request, status, error) { 
     alert("o0ops");   
    } 
}); 
+0

नहीं .. यह jQuery.min.js पर त्रुटि फेंकता है। मैंने पहले भी कोशिश की थी। – iMatoria

+0

मैंने दोनों की कोशिश की/पुनः प्रयास किया है। – iMatoria

+0

क्या आप नमूना प्रोजेक्ट बना सकते हैं और इसे स्वयं आज़मा सकते हैं। – iMatoria

2

समस्या है साथ youe समाधान में एक Global.ascx फ़ाइल जोड़ें और कोड के स्थान पर ऑपरेशन की बॉडी स्टाइल। आप जिसका अर्थ है कि अनुरोध एक वस्तु में लिपटे, वस्तु नाम के लिए एक सदस्य के साथ होना चाहिए

[WebInvoke(
     Method = "POST", 
     ResponseFormat = WebMessageFormat.Json, 
     RequestFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.WrappedRequest, 
     UriTemplate = "/SaveUserData")] 
string SaveUserData(UserInfo userInfo); 

के रूप में यह घोषणा की। यदि आप नीचे यह अनुरोध भेजते हैं, तो इसे काम करना चाहिए।

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: url, 
    data: '{"userInfo":{"EmailID":"praveen", "LevelID": 1}}', 
    dataType: "json", 
    processData: false, 
    success: function (data, textStatus, jqXHR) { 
     debugger; 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     debugger; 
    } 
}); 

एक अन्य विकल्प Bare को आपरेशन के BodyStyle संपत्ति को बदलने के लिए है, जो मामले में आपकी मूल अनुरोध सही था।

+0

नहीं, यह किसी भी तरह से काम नहीं करता है। क्या आप नमूना डाउनलोड कर सकते हैं और इसे काम कर सकते हैं: http://www.filefactory.com/file/c0dd2ac/n/WCFPost.zip – iMatoria

+0

आप पेस्टबिन पर मौजूद नमूने को देख सकते हैं जो आपके परिदृश्य के समान है, और अपना काम। एसवीसी फ़ाइल: एसवीसी: http://pastebin.com/aG7FNDb0। SVC.cs फ़ाइल: SVC.CS: http://pastebin.com/vhqeBSV3। एचटीएमएल फ़ाइल: http://pastebin.com/fDiYzR3Q। Web.config: http://pastebin.com/j4yw1axb – carlosfigueira

+0

प्रयासों के लिए धन्यवाद। लेकिन, यह अभी भी काम नहीं करता है। आपके पास कोड के हर टुकड़े जैसा आपने कहा है। – iMatoria