Ir para conteúdo
Fórum Script Brasil
  • 0

Não repopula o combo e os inputs (ajax)


Guest Eduacsp

Pergunta

Pessoal,

Estou tentando consertar essas funções de ajax mas não consigo. O que acontece é que quando eu populo um combo ou um input text usando ajax...ele popula certinho com os dados corretos do banco, mas quando eu tento popular novamente (sem fechar o IE) ele volta com os dados antigos. É como se ele visse que o objeto foi criado e ele não chama os métodos pra popular novamente a partir do banco.

Alguém sabe como eu posso alterar o código para que ele sempre chame o método (java) para popular os combos e os input text?

Obs: ele funciona certo no firefox, mas no IE não.

ajax.js:

var objXMLHttpRequest = "";
var req = null;
var response = null;

var XMLHTTP_VERSIONS = ["Microsoft.XMLHTTP",
                        "MSXML2.XMLHTTP",
                        "Msxml2.XMLHTTP.7.0",
                        "Msxml2.XMLHTTP.6.0",
                        "Msxml2.XMLHTTP.5.0",
                        "Msxml2.XMLHTTP.4.0",
                        "MSXML2.XMLHTTP.3.0"];

function callUrlAjax(dscUrl, method, functionReturn)
{
    req = null;

    var objExiste = true;
    try {
        req = new XMLHttpRequest();
    }
    catch (ex) {
        try {
            if (objXMLHttpRequest) {
                req = new ActiveXObject(objXMLHttpRequest);
            }
            else {
                for (var i=0; i<XMLHTTP_VERSIONS.length; i++) {
                    try {
                        req = new ActiveXObject(XMLHTTP_VERSIONS[i]);
                        if (req) {
                            objXMLHttpRequest = XMLHTTP_VERSIONS[i];
                            break;
                        }
                    }
                    catch (exA) {
                        objExiste = false;
                    }
                }
            }
        }
        catch (exB) {
            objExiste = false;
        }
    }

    // Verifica se o objeto foi criado
    if (objExiste == false)
        return false;

    req.onreadystatechange = function() {
        if (isResponseCompleteAjax()) {
            if (req.status == 200) {
                   response = req.responseText;
                   functionReturn(response);
               }
            }
       }
    req.open(method, dscUrl, true);
    req.send(null);

    return true;
}

function isResponseCompleteAjax()
{
    if (req.readyState == 4) return true;
    else return false;
}

function isValidResponseAjax()
{
    if (req.status == 200 && req.responseXML != null) {
        response  = req.responseXML.documentElement;
        if (response != null) return true;
        else return false;
    }
    else return false;
}

function getResponseValueAjax(tagName, position)
{
    if (response != null) {
        var elements = response.getElementsByTagName(tagName);
        if (elements != null&&elements[position].firstChild!=null)
        return elements[position].firstChild.data;
        else return "";
    }
    else return "";
}

function getResponseSizeAjax(tagName)
{
    if (response != null) {
        var elements = response.getElementsByTagName(tagName);
        if (elements != null) return elements.length;
        else return 0;
    }
    else return 0;
}
SelectUtil.js:
var SelectUtil = new Object();


SelectUtil.clear = function(elem) {
    for (var i = elem.options.length - 1; i >= 0; i--) {
        elem.options[i] = null;
      }
};

SelectUtil.insert = function(elem, text, value) {
    var opt = new Option(text, value);
    this.insertOption(elem, elem.options.length, opt);
};

SelectUtil.remove = function(elem, idx) {
      if ((idx < 0) || (idx >= elem.options.length)) {
          return null;
    }
    var result = elem.options[idx];
    elem.options[idx] = null;
    return result;
};

SelectUtil.selectByValue = function(elem, value) {
    for (var i = 0; i < elem.options.length; i++) {
        var opt = elem.options[i];
          if (opt.value == value) {
            opt.selected = true;
              break;
          }
    }
};

SelectUtil.countSelected = function(elem) {
    var count = 0;
    for (var i = 0; i < elem.options.length; i++) {
        var opt = elem.options[i];
          if (opt.selected ) {
            count++;
          }
    }
    return count;
};

SelectUtil.insertOption = function(elem, idx, opt) {
    if ((idx < 0) || (idx > elem.options.length)) {
        idx = elem.options.length;
      }

      if (idx < elem.options.length) {
        for (var i = elem.options.length; i > idx; i--) {
            var opt2 = elem.options[i - 1];
              elem.options[i] = new Option(opt2.text, opt2.value);
          }
      }
      elem.options[idx] = opt;
};

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Você usa um Php pra devolver os dados do banco? Eu to achando que os dados são guardados em cache, e talvez seja necessário mudar algumas linhas do php que retorna o texto.

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Você usa um Php pra devolver os dados do banco? Eu to achando que os dados são guardados em cache, e talvez seja necessário mudar algumas linhas do php que retorna o texto.

Abraço

Não...não são guardados em cache...e eu uso java para puxar do banco.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...