Я реализовал веб-элемент управления .NET, который использует структуру обратного вызова, реализованную в ASP.Net 2.0. Это автоматический контроль и он работает правильно в 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» - это всегда одни и те же данные, поэтому innerHTML для <div>
, который отображает мой выпадающий список, всегда показывает одни и те же элементы. Я дважды проверил свой код на стороне клиента, и правильная информация отправляется клиент-> сервер и взамен сервер-> клиент.
Следует отметить, что в функции "WebForm_DoCallback", созданной .NET Framework, вызывается следующий фрагмент кода:
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 не вызывается дважды в первый раз, когда я использую раскрывающийся список - фактически, раскрывающийся список работает правильно для самого первого нажатия клавиши. Он перестает работать и удваивает обратный вызов со старыми возвращаемыми данными после первого нажатия клавиши.