Настройка:
Рассматриваемая программа пытается отправить данные формы посредством вызова 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 в пакете, которые не являются сообщениями данных формы, работают нормально.
Я искал в интернете и проконсультировался с высококвалифицированными членами команды и не обнаружил ничего, что удовлетворительно решает проблему.
* Попробовал Q & A на форумах поддержки Dojo.
Вопросы:
Какие методы устранения неполадок вы рекомендуете?
Какие инструменты устранения неполадок вы рекомендуете для анализа HTTPS?
Любые гипотезы о том, что проблема может быть?
Какие-нибудь идеи для обходных путей, которые не являются полными (плохими) взломами?
Ed. Решение
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
Увидев это сообщение с сервера, я еще немного обошел Фиддлера, чтобы посмотреть, что еще можно из него извлечь. Обнаружено, что есть вкладка WebForms, которая показывает значения в веб-форме. Разве вы не знаете, поля "xxx_DISPLAYED_
" выше были в нем.
Я пока не совсем понимаю, почему существуют эти поля, потому что я не создал их явно в веб-коде PLSQL
. Но теперь я понимаю, что целевая процедура должна включать их в качестве параметров для правильной работы. Опять же, это только для меня IE6
, так как Firefox работал нормально.
Ну, вот краткий ответ и взломать, чтобы это исправить. Надеемся, что немного больше работы в этой области приведет к лучшему пониманию основ, происходящих здесь.