Tôi đang sử dụng jquery để gọi một webservice trả về tập dữ liệu với một vài bảng trong đó.Một tham chiếu vòng tròn đã được phát hiện trong khi sắp xếp một đối tượng thuộc kiểu System.Globalization.CultureInfo
Điều này đã hoạt động tốt cho đến khi tôi cần thiết để thiết lập webmethod của mình để chấp nhận tham số. Tôi phản ánh điều này ở phía khách hàng với
data: "{paramname:'" + paramval+ "'}",
Bây giờ tôi nhận được lỗi sau khi trả về webmethod. Điều này xảy ra bất kể những gì được trả lại trong tập dữ liệu
Error:{"Message":"A circular reference was detected while serializing an object of type \u0027System.Globalization.CultureInfo\u0027.","StackTrace":" at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n at ...etc
Khi webmethod không có tham số, phía máy khách sẽ giống như bên dưới trừ dòng dữ liệu: bị xóa.
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); }
}
});
}
Edit: Theo gợi ý để thay đổi theo yêu cầu để
data: {paramname: paramval},
mang lại các lỗi sau.
Error:{"Message":"Invalid JSON primitive: paramval.","StackTrace":"
at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"} Status: 500
Chỉ cần lưu ý, bạn là đúng để gửi dữ liệu json như là một chuỗi (vs json thực tế). Bạn có thể thử lặp lại câu hỏi về cách giải quyết lỗi: "Đã tìm thấy tham chiếu vòng tròn trong khi sắp xếp một đối tượng thuộc loại System.Globalization.CultureInfo" (đó là những gì đang xảy ra trên máy chủ) – meandmycode