2013-03-08 9 views
17

साथ ajax jQuery विधि मैं इस तरह कोड है: मैं वस्तु शाब्दिक रूप में डाटा मूल्य उपयोग कर रहा हूँ, के बजाय एक स्ट्रिंग श्रृंखलाबद्ध। क्यूं कर? see hereसंदेश: अमान्य JSON आदिम: C# WebMethod

मेरी कोड यह है: -

$.ajax({ 
        url: "../Member/Home.aspx/SaveClient", 
        type: "POST", 
        async: false, 
        dataType: 'json', 
        contentType: 'application/json; charset=utf-8', 
        data: { 
         "projectSoid": ProjectId, 
         "startDate": StartDate, 
         "endDate": EndDate, 
         "clientManager": ClientManager 
        }, 
        success: function (response) { 
         if (response.d != "") { 

         } 
        }, 
        error: function (response) { 
         var r = jQuery.parseJSON(response.responseText); 
         alert("Message: " + r.Message); 
         alert("StackTrace: " + r.StackTrace); 
         alert("ExceptionType: " + r.ExceptionType); 
        } 
       }) 

और webmethod इस तरह है:

[WebMethod] 
     public static string SaveClient(string projectSoid, string startDate, string endDate, string clientManager) 
     {} 

समस्या मैं इस तरह त्रुटि मिली है:

संदेश: अमान्य JSON आदिम : प्रोजेक्टसाइड

+6

आप अपने डेटा JSON.strigify की जरूरत संहिता पर क्लाइंट साइड

var items = [{ projectSoid: ProjectId, startDate: StartDate, endDate: EndDate, clientManager: ClientManager }]; $.ajax({ url: '"../Member/Home.aspx/SaveClient', type: "POST", data: JSON.stringify({ items: items }), //data: JSON.stringify("{DocKey : '" + DocKey + "',highlightText: '" + JSON.stringify(text) + "',pageNo: '" + pgNo + "',left: '" + left + "',top: '" + top + "',width: '" + width + "',height: '" + height + "'}"), //data: "{DocKey\":\""+ DocKey+"\",\"highlightText\":\""+ text +"\",\"pageNo\":\""+pgNo+"\",\"left\":\""+left+"\",\"top\":\""+top+",\"width\":\""+width+"\",\"height\":\""+ height +"}}", // data: "{DocKey : '" + DocKey + "',highlightText: '" + text + "',pageNo: '" + pgNo + "',left: '" + left + "',top: '" + top + "',width: '" + width + "',height: '" + height + "'}", contentType: "application/json; charset=utf-8", dataType: "json", beforeSend: function() { alert("Start!!! "); }, success: function (data) { alert("Save data Successfully"); }, failure: function (msg) { alert("Sorry!!! "); evt.obj.deleteObject(); }, async: false }); 

वेब विधि में जावास्क्रिप्ट: 'डेटा: JSON.strigify ({ " projectSoid ": ProjectId, " STARTDATE ": StartDate, " ENDDATE ": EndDate, " clientManager ": clien tManager }), ' – nemesv

+0

मेरी टिप्पणी पर कोई टिप्पणी? या तुमने कोशिश की? क्या यह काम करता है? – nemesv

+0

मुझे नहीं पता कि JSON.strigify क्या है? मुझे त्रुटि मिली है कि यह कार्य नहीं कर रहा है :( –

उत्तर

36

अपने contentType: 'application/json; charset=utf-8' आप दावा कर रहे हैं कि आप JSON भेज देंगे लेकिन अभी आप अपने data संपत्ति JSON पकड़े नहीं है के साथ। तो करने के लिए अपने data संपत्ति को बदलने

:

आप JSON.stringify विधि के साथ JSON करने के लिए अपने data को बदलने की जरूरत है

data: JSON.stringify({ 
    "projectSoid": ProjectId, 
    "startDate": StartDate, 
    "endDate": EndDate, 
    "clientManager": ClientManager 
}), 

आप नोट करना चाहिए कि JSON.stringify विधि मूल रूप से तो पुराने ब्राउज़र में समर्थित नहीं है आप विभिन्न पुस्तकालयों में से एक का उपयोग कर के साथ एक कार्यान्वयन प्रदान करने के लिए आवश्यकता हो सकती है की तरह:

डगलस Crockford के JSON2 library.

+0

ठीक, धन्यवाद :) –

+0

@nemesv है मैं कोशिश करेंगे अपने कोड में बस एक सुधार ... यू को गलत तरीके से stringify वर्तनी के रूप में strigify ... – Saravanan

+0

@NestorC: यदि आप स्वीकार कर सकते हैं यह उत्तर के रूप में अगर यह आपकी आवश्यकताओं को पूरा करता है? ताकि यह किसी के लिए मदद करेगा ... – Saravanan

1

पीछे

[WebMethod]  
public static string SaveClient(object items)  { 

    List<object> lstItems = new  JavaScriptSerializer().ConvertToType<List<object>>(items); 

    Dictionary<string, object> dic = (Dictionary<string, object>)lstItems[0]; 

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