我看过很多关于这个错误的帖子,解释了 JSON 问题。我只是有一个调用网络方法的经典网络表单。我在一个表单中有一堆单选按钮和 2 个下拉菜单。一旦我检查了一个单选按钮和两个下拉菜单,我必须单击Build template
按钮来填充表单(基本上是带有收件人、抄送、主题字段等的电子邮件表单)
当我选择第一个单选按钮然后选择下拉菜单时,我得到了所需的结果。但是,当我选择任何其他返回数据的单选按钮时,我会收到此循环引用错误。最后一个单选按钮不返回数据,因此不会引发序列化错误。
这是调用页面方法的javascript
function HandleIT() {
var ServiceID = document.getElementById("<%=ddServiceList.ClientID%>").value;
var Status;
// #code to set the drop downs to 1,2,3,4,5 on 'checked'# removed
PageMethods.FindAllRecipient(ServiceID, Status, onSucess, onError);
function onSucess(result) {
document.getElementById("<%=txtTo.ClientID%>").value = result[0];
document.getElementById("<%=txtCC.ClientID%>").value = result[1];
}
function onError(result) {
alert('Something wrong.');
}
}
这是服务器方法中的代码:
[WebMethod]
public static object[] FindAllRecipient(string serviceID, string currentStatus)
{
RemoteObj1 = new ServiceEmailer();
Object[] results = RemoteObj1.FindAllRecipients(
Convert.ToInt16(serviceID),
Convert.ToInt16(currentStatus));
return results;
}
该代码在服务器方法中运行良好。所以那里没有问题。正如错误所说的那样,问题出在序列化和返回结果时。