2011-01-07 12 views
11

पर डेटटाइम मान कैसे पास करें मेरे पास डेटटाइम के रूप में परिभाषित पैरामीटर वाला वेबमाइडर है। जब मैं फोन किकिसी वेबमाइथ (एएसएमएक्स)

वेब सेवा, मैं इस त्रुटि मिलती है:

/// <summary> 
/// Summary description for AgendamentoService 
/// </summary> 
[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.Web.Script.Services.ScriptService] 
public class AgendamentoService : System.Web.Services.WebService 
{ 

    public AgendamentoService() 
    { 

     //Uncomment the following line if using designed components 
     //InitializeComponent(); 
    } 

    [WebMethod] 
    public CompromissoWekCalendarVO[] GetCompromissos(int id_pessoa, DateTime start, DateTime end) 
    { 
     bo.CompromissoBO compBO = new bo.CompromissoBO(); 
     return compBO.Get(id_pessoa,start, end).ToArray(); 
    } 

} 

और यहाँ, मेरे मुवक्किल साइड कोड:

var params = '{id_pessoa: "' + id_pessoa + '", start:/Date('+ start.getTime()+')/, end:/Date(' + end.getTime()+')/}'; 
        $.ajax( 
         { 
          type: "POST", 
          dataType: "json", 
          contentType: "application/json; charset=utf-8", 
          url: '<%= this.ResolveClientUrl("~/services/misc/AgendamentoService.asmx/GetCompromissos") %>', 
          data: params, 
          success: function (json) { 

           if ($.isArray(json.d)) { 
            $.each(json.d, function(key, value) { 
            value.start = getJsonDate(value.start); 
            value.end = getJsonDate(value.end); 
            }); 
           } 

           callback(json.d);         

          } 
         }); 

कहाँ

at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth) at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth) at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth) at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer) at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit) at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input) at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer) at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context) at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)"

यह मेरी WebService है 'स्टार्ट' और 'एंड' टाइम दो जावास्क्रिप्ट 'डेट' ऑब्जेक्ट्स हैं।

उत्तर

9

Thats क्योंकि एएसपी.NET अजाक्स की विशिष्ट तिथि/समय तार प्रारूप है - इसकी "\/Date(x)\/" के रूप में, जहां एक्स 1 जनवरी, 1 9 70 से आधी रात यूटीसी में एमएस की संख्या है। इसलिए अनिवार्य रूप से, आपको कुछ सहायक फ़ंक्शन का उपयोग करने की आवश्यकता है जो सेवा को कॉल करते समय आपकी जेएस तिथियों को आवश्यक स्वरूप में परिवर्तित कर देगा (और इसके विपरीत, दिनांक/समय जेसन सेवा से JS दिनांक/समय ऑब्जेक्ट)।

http://schotime.net/blog/index.php/2008/07/01/jquery-plugin-for-aspnet-ajax-jmsajax/

आप पा सकते हैं:

तो, आप इस तरह के

`'", start:/Date('+ start.getTime()+')/, end...` 

को
'", start:"\\\/Date(' + this.getTime() + ')\\\/", end...' 

तेज रास्ता के रूप में प्लग में नीचे का उपयोग करने के कोड टुकड़ा बदलना होगा नीचे लेखों में अधिक जानकारी:

http://www.overset.com/2008/07/18/simple-jquery-json-aspnet-webservice-datetime-support/

http://schotime.net/blog/index.php/2008/06/19/jquery-ajax-aspnet-and-dates/

http://msmvps.com/blogs/luisabreu/archive/2009/08/19/jquery-full-control-with-the-ajax-function.aspx

+0

विनयसी, धन्यवाद! मुझे jmsAjax के बारे में पता नहीं था। – Cleiton

+0

jmsAjax प्लगइन jQuery के नवीनतम संस्करण (1.6.2) के साथ काम नहीं करता है। – Gan

+0

@ गान, आप अपनी ब्लॉग प्रविष्टि (उत्तर में लिंक) पर टिप्पणी के रूप में लेखक को अपनी समस्या/बग की रिपोर्ट कर सकते हैं। – VinayC

1

यह मेरे लिए काम किया:

JSON.stringify(new Date()) 

यह की तरह एक प्रारूप में धर्मान्तरित "2014-06-04T14: 26: 27.129Z", जो मेरी वेब सेवा डेटटाइम पैरामीटर के लिए स्वीकार करने में प्रसन्न है।

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