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;
};
Pergunta
Guest Eduacsp
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:
SelectUtil.js:Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.