Настройка:
рассматриваемая программа пытается отправить данные формы через вызов AJAX целевой процедуре, содержащейся в том же пакете, что и вызывающая программа. Это делается для сайта, использующего безопасное соединение (HTTPS). Здесь используется технология PLSQL и DOJO библиотека JavaScript. Средство разработки представляет собой текстовый редактор.
Фрагмент кода:
> function testPost() {
>> dojo.xhrPost( {
url: ''dr_tm_w_0120.test_post'',
form: ''orgForm'',
load: testPostXHRCallback,
error: testPostXHRError
});
}
> function testPostXHRCallback(data,ioArgs) {
>> alert(''post callback'');
try{
dojo.byId("messageDiv").innerHTML = data;
}
catch(ex){
if(ex.name == "TypeError")
{
alert("A type error occurred.");
}
}
return data;
}
>
function testPostXHRError(data, ioArgs) {
>> alert(data);
alert(''Error when retrieving data from the server!'');
return data;
}
Проблема.
При использовании IE6 (которым пользуется вся пользовательская база) сервер возвращает ответ с ошибкой 404.
Наблюдения:
Программа отлично работает в Firefox.
Вызывающая процедура не может быть нацелена на какие-либо процедуры в том же пакете.
Вызывающая процедура может ориентироваться на внешние сайты (как http, так и https) .
Другие вызовы AJAX в пакете, которые не являются публикациями данных формы, работают нормально.
Я провел поиск в интернете и проконсультировался со старшими опытными членами команды и не обнаружил все, что удовлетворительно решает проблему.
*Пробовал Вопросы и ответы на форумах поддержки Dojo.
Вопросы:
Какие методы устранения неполадок вы рекомендуете?
Какие средства устранения неполадок вы рекомендуете для анализа HTTPS?
Есть какие-либо гипотезы о том, в чем может быть проблема?
Есть идеи? для обходных путей, которые не являются полными (плохими) взломами?
Ред. Решение
lomaxx, спасибо за совет по скрипачу. вы не представляете, как здорово было получить это и использовать в качестве инструмента отладки. после запуска это то, что я нашел и как я это исправил (по крайней мере, в краткосрочной перспективе):
> ef Fri, 8 Aug 2008 14:01:26 GMT dr_tm_w_0120.test_post: SIGNATURE (parameter names) MISMATCH VARIABLES IN FORM NOT IN PROCEDURE: SO1_DISPLAYED_,PO1_DISPLAYED_,RWA2_DISPLAYED_,DD1_DISPLAYED_ NON-DEFAULT VARIABLES IN PROCEDURE NOT IN FORM: 0
Увидев это сообщение с сервера, я еще немного поковырялся в Fiddler, чтобы посмотреть, что еще я могу из него извлечь. Обнаружено, что есть вкладка WebForms, которая показывает значения в веб-форме. Разве вы не знали, что поля «xxx_DISPLAYED_
» выше были в нем.
Я пока не совсем понимаю, зачем существуют эти поля, потому что я не создавал их явно в веб-коде PLSQL
. Но теперь я понимаю, что целевая процедура должна включать их в качестве параметров для правильной работы. Опять же, это только в случае с IE6
для меня, так как Firefox работал нормально.
Ну, это краткосрочный ответ и хак, чтобы это исправить. Надеемся, что немного больше работы в этой области приведет к лучшему пониманию основ, происходящих здесь.