【发布时间】:2010-10-14 22:58:31
【问题描述】:
我正在使用 jquery 调用一个 web 服务,它返回一个包含几个表的数据集。
在我需要设置我的 web 方法以接受参数之前,这一切正常。我用
在客户端反映了这一点data: "{paramname:'" + paramval+ "'}",
当 web 方法返回时,我现在收到以下错误。无论数据集中返回什么,都会发生这种情况
Error:{"Message":"序列化时检测到循环引用 类型的对象 \u0027System.Globalization.CultureInfo\u0027.","StackTrace":" at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(对象 o,StringBuilder sb,Int32 深度,Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n at ...等
当 webmethod 没有参数时,客户端 js 看起来和下面一样,除了 data: 行被删除。
function ClientWebService(paramval){
$.ajax({
type: "POST",
url: "WebService1.asmx/webmethodName",
data: "{paramname:'" + paramval+ "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
ParseResult(msg.d);
},
error: function(err) {
if (err.status == 200) {
ParseResult(err);
}
else { alert('Error:' + err.responseText + ' Status: ' + err.status); }
}
});
}
编辑:根据建议将请求更改为
data: {paramname: paramval},
产生以下错误。
错误:{"Message":"无效的 JSON 原语:paramval。","StackTrace":"
在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n 在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 深度)\r\n 在 System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串 输入,Int32 depthLimit,JavaScriptSerializer 序列化程序)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer 序列化程序、字符串输入、类型类型、Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](字符串 输入)\r\n 在 System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext 上下文,JavaScriptSerializer 序列化程序)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData 方法数据,HttpContext 上下文)\r\n 在 System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext 上下文,WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"} 状态:500
【问题讨论】:
-
请注意,您将 json 数据作为字符串发送是正确的(与实际的 json 相比)。您可以尝试将问题改写为如何解决错误:“在序列化 System.Globalization.CultureInfo 类型的对象时检测到循环引用”(这是服务器上发生的情况)
标签: c# jquery web-services json