Cle*_*ton 11 asp.net json asmx webservice-client
我有一个WebMethod,其参数定义为DateTime.我打电话的时候
webservice,我收到此错误:
在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(深度Int)在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(深度Int)在的System.Web .Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(深度Int)在System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串输入,的Int32 depthLimit,JavaScriptSerializer串行器)在System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer串器,串输入,类型类型,的Int32 depthLimit)在System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T](字符串输入)在System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext的上下文中,JavaScriptSerializer串行器)在系统. Sys的Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext context)tem.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context,WebServiceMethodData methodData)"
这是我的WebService:
/// <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();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我的客户端代码:
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);
}
});
Run Code Online (Sandbox Code Playgroud)
'开始'和'结束'时间是两个javascript'日期'对象.
这是因为ASP.NET Ajax期望有特定的日期/时间有线格式 - 其形式为"\/Date(x)\/",其中x是自1970年1月1日UTC午夜以来经过的ms数.基本上,你需要使用一些辅助函数,在调用服务时将JS日期转换为所需的格式(反之亦然,日期/时间json从服务到JS日期/时间对象).
所以,你必须改变代码片段,如
`'", start:/Date('+ start.getTime()+')/, end...`
Run Code Online (Sandbox Code Playgroud)
至
'", start:"\\\/Date(' + this.getTime() + ')\\\/", end...'
Run Code Online (Sandbox Code Playgroud)
使用以下插件的最快方法:
http://schotime.net/blog/index.php/2008/07/01/jquery-plugin-for-aspnet-ajax-jmsajax/
您可以在以下文章中找到更多信息:
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
| 归档时间: |
|
| 查看次数: |
16066 次 |
| 最近记录: |