JSONの問題について説明するこのエラーに関する非常に多くの投稿を見てきました。Web メソッドを呼び出す従来の Web フォームを使用しています。フォームにたくさんのラジオ ボタンと 2 つのドロップダウンがあります。ラジオ ボタンの 1 つとドロップダウンの 2 つをチェックしたら、Build template
ボタンをクリックしてフォームに入力する必要があります (基本的には、to、cc、件名フィールドなどを含む電子メール フォームです)。
最初のラジオ ボタンを選択してからドロップダウンを選択すると、必要な結果が得られます。しかし、データを返す他のラジオ ボタンを選択すると、この循環参照エラーが発生します。最後のラジオ ボタンはデータを返さないため、シリアル化エラーは発生しません。
ページメソッドを呼び出す 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;
}
コードはサーバー メソッドで正常に動作します。したがって、問題はありません。エラーが明らかに言うように、問題は結果をシリアル化して返すときにあります。