ASP.Net 2.0 で実装されたコールバック構造を使用する .NET Web コントロールを実装しました。これは自動ドロップダウン コントロールであり、IE 6.0/7.0 および Google Chrome で正しく動作します。関連するコールバック関数は次のとおりです。
function ReceiveServerData(args, context)
{
document.getElementById(context).style.zIndex = 300;
document.getElementById(context).style.visibility = 'visible';
document.getElementById(context).innerHTML = args;
fixHover(context);
}
Firefox では、「args」は常に同じデータなので、<div>
ドロップダウンの表示である の innerHTML には常に同じ項目が表示されます。クライアント側のコードを再確認したところ、正しい情報がクライアント -> サーバーに送信され、その代わりにサーバー -> クライアントに送信されています。
.NET フレームワークによって作成された "WebForm_DoCallback" 関数では、次のスニペットが呼び出されます。
if (setRequestHeaderMethodExists) {
xmlRequest.onreadystatechange = WebForm_CallbackComplete;
callback.xmlRequest = xmlRequest;
xmlRequest.open("POST", theForm.action, true);
xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlRequest.send(postData);
return;
}
コールバック関数 ReceiveServerData は と の両方で呼び出されxmlRequest.open("POST", theForm.action, true);
ますxmlRequest.send(postData);
。これがエラーを引き起こしているのだろうかと思いますが、私のデバッグ能力は限界です。
追加するように編集されました-ドロップダウンを初めて使用したときにReceiveServerDataが2回呼び出されることはありません-実際、ドロップダウンは最初のキーストロークで正しく機能します。最初のキーストロークの後、動作を停止し、古い戻りデータでコールバックを 2 倍にします。