Ir para conteúdo


Foto

Perda de parâmetros


  • Por favor, faça o login para responder
2 respostas neste tópico

#1 carlosleda

carlosleda

    Iniciante

  • Membros
  • Pip
  • 1 posts

Postado 07 July 2009 - 09:56

Tenho tido problemas com "perda" dos parâmetros. Em algumas situações a página chamada é executada sem ter recebido nenhum parâmetro, ocasionando erros em função disso.
Esta página sempre recebe parâmetros, e na maioria das vezes ela recebe normalmente, no entanto em algumas situações deixa de receber.
Como é esporádico não consigo reproduzir.

A programação que tenho para chamar uma página é a seguinte:

Ext.get(<id>).load({
url: <url>,
scripts: true,
params: <parametros> + "&no_bug_firefox",
method: "POST",
text: "Processando...",
timeout: 120000
});

sendo que os <parametros> são obtidos através da seguinte rotina JS:

function MontaURL(formulario) {
    var URL = "";
    var i = 0;
    var arr = new Array(0);

    // Verifica se o objeto existe
    if ($(formulario) != undefined) {

        elementos = $(formulario).elements;

        // Monta a URL contendo todos os filtros possíveis
        var iQtde = elementos.length;

        // Pega todos os objetos que estejam marcados ou selecionados (checkbox e radio)
        while (i < iQtde) {
    elemento = elementos[i];
            if (((elemento.type == "checkbox") && elemento.checked) ||
                ((elemento.type == "radio") && elemento.checked) ||
                (elemento.type != "checkbox") && (elemento.type != "radio")) {

if (elemento.type != "radio") {
if (elemento.id != "" && elemento.id.indexOf("ext-gen") == -1)
arr.push(elemento.id + "=" + escape(elemento.value));
} else {
if (elemento.name != "" && elemento.name.indexOf("ext-gen") == -1)
arr.push(elemento.name + "=" + escape(elemento.value));
}
            }

            i++;
        }
    }

    URL = arr.join("&");

    return URL;
}

Ou seja, eu chamo a rotina MontaURL() para pegar todos os meus objetos de um formulário, crio a string e depois pelo Ajax do Ext chamo a página desejada.

Na página que eu recebo quando ocorre um determinado erro, mando exibir os parâmetros que a página recebeu, e nenhum é exibido. E isso me intriga, visto que o parâmetro no_bug_firefox sempre é enviado, mesmo que não se tenha nada a enviar.

A impressão que tenho é que por algum motivo os parâmetros deixam de ser enviados para a página destino.

Alguém tem alguma idéia do que pode ser?

#2 Rodrigo, Kptão Nascimento

Rodrigo, Kptão Nascimento

    Member Avançado

  • Expert User
  • 2472 posts
  • LocationTres Coroas, RS

Postado 07 July 2009 - 10:02

Sinceramente eu não te entendi... tu tah fazendo um post passando parametros por GET?

Não sei se eu q n saquei... mas ta estranho isso ai....
não seu usa parametros na url quando se usa Ext.ajax....

e detalhe.... url tem limite....
Sempre que um tópico for resolvido clique no botão MARCAR COMO RESOLVIDO localizado ao lado do botão RESPONDER.

http://blog.rkn.com.br
http://twitter.com/blogrkn

Atualize seu navegador
http://imasters.uol....br/crossbrowser

#3 Bruno Tavares

Bruno Tavares

    Member Avançado

  • Membros
  • PipPipPip
  • 1166 posts
  • LocationRedwood City, CA, USA

Postado 07 July 2009 - 10:43

Simplifica a rotina. Ao invés de passar os parâmetros "do velho jeito", concatenando com "&" e dando escape nos valores. Retorne um objeto, +- assim:

//parametros default
var params = {
   no_bug_firefox: true
};

//adiciona valores dos checkboxes
for( elCheckbox in this.getCheckboxes() ) //getCheckboxes é uma função de exemplo que eu inventei agora...
{
   params[ elCheckbox.name ] = elCheckbox.getValue();
}

//lança requisição
Ext.Ajax.request({
   ...
   params:params
   ...
})

O Ext passa o trabalho de converter o objeto numa URL válida (:


P.S.: utiliza tags bbcode do fórum para publicar código.
Bruno Tavares, Sr. UI Engineer
Netflix




0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos