Pergunta

A configuração:
O programa em questão tenta postar dados do formulário por meio de uma chamada AJAX para um procedimento de destino contido no mesmo pacote do chamador.Isso é feito para um site que usa uma conexão segura (HTTPS).A tecnologia usada aqui é PLSQL e a DOJO Biblioteca JavaScript.A ferramenta de desenvolvimento é basicamente um editor de texto.

Fragmento de código:

> 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;  
       }    

O problema:
Ao usar o IE6 (que toda a base de usuários usa), a resposta enviada de volta do servidor é um erro 404.

Observações:
O programa funciona bem no Firefox.
O procedimento de chamada não pode ter como alvo nenhum procedimento dentro do mesmo pacote.
O procedimento de chamada pode ter como alvo sites externos (http, https).
As outras chamadas AJAX no pacote que não são postagens de dados de formulário funcionam bem.
Eu procurei o internet e consultei membros da equipe experientes e não descobri nada que resolva o problema de forma satisfatória.
*Testado Perguntas e respostas nos fóruns de suporte do Dojo.

As questões:
Quais técnicas de solução de problemas você recomenda?
Quais ferramentas de solução de problemas você recomenda para análise de HTTPS?
Alguma hipótese sobre qual poderia ser o problema?
Alguma idéia de soluções alternativas que não sejam hacks totais (ruins)?

Ed.A solução
lomaxx, obrigado pelo violinista dica.você não tem ideia de como foi incrível conseguir isso e usá-lo como uma ferramenta de depuração.depois de iniciá-lo, foi isso que descobri e como consertei (pelo menos no curto prazo):

> 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

Depois de ver aquela mensagem do servidor, procurei um pouco mais pelo Fiddler para ver o que mais poderia aprender com ele.Descobri que existe uma guia WebForms que mostra os valores no formulário da web.Você não saberia disso, o "xxx_DISPLAYED_"os campos acima estavam nele.

Ainda não entendo por que esses campos existem, porque não os criei explicitamente na web PLSQL código.Mas agora entendo que o procedimento alvo deve incluí-los como parâmetros para funcionar corretamente.Novamente, isso ocorre apenas no caso de IE6 para mim, pois o Firefox funcionou bem.

Bem, essa é a resposta de curto prazo e um truque para consertar.Esperançosamente, um pouco mais de trabalho nesta área levará a uma melhor compreensão dos fundamentos que estão acontecendo aqui.

Foi útil?

Solução

A primeira parada seria ligar Violinista e analise os dados que entram e saem do navegador.

Dê uma olhada nos cabeçalhos, o URL realmente sendo chamado e os parâmetros (se houver) sendo passados ​​para o método AJAX e veja se tudo parece bem antes de chegar ao servidor.

Se tudo parecer ok, existe alguma maneira de verificar se ele está realmente atingindo o servidor por meio de registro ou rastreamento no método AJAX?

Ed:outra coisa que eu tentaria é criar uma página de teste para chamar o método AJAX no servidor usando uma chamada não baseada em Ajax e analisar o tráfego no violinista e comparar os dois.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top