function ajaxRun(id,url){
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status == 200) {
$(id).innerHTML=xmlhttp.responseText;
if (xmlhttp.responseText.match("<!--###")) {
results = xmlhttp.responseText.split("###");
alert(results[1]);
}
} else {
alert(xmlhttp.statusText);
window.location.reload();
}
}
}
xmlhttp.send(null);
if (typeof(results[1]) != "undefined") {
return results[1];
} else {
return 0;
}
}
Essa função utiliza XMLHttpRequest para processar um script que faz uma consulta SQL, e caso haja erro a saída seria algo como:
<script><!--###mensagem de erro!###--></script>Assim, utilizo a função "match" para checar se houve erro e exibi-la através de um "alert". Além disso preciso tratar o retorno da função, pois caso não exista mensagem preciso saber para, com uma outra função, executar outros comandos caso a consulta tenha sucesso.
Depois de enviar o conteúdo através da função "send" do objeto XMLHttpRequest, faço o teste do valor de "typeof(results[1])", onde results[1] deveria conter a mensagem de erro. Caso seja "undefined" retorna 0, do contrário retorna a mensagem de erro.
Aí temos o problema! Se houver erro na consulta SQL o valor "typeof(results[1])" deveria ser "string", mas neste caso está retornando "undefined". Mas como se não bastasse esse problema, descobri que se eu mostrar o valor de "typeof(results[1])" através de um "alert" antes de testá-lo tudo funciona perfeitamente, isto é, results[1] é uma string.
Desde então tenho quebrado a cabeça há dois dias.
Algum sábio programador teria solução para isso?
[]s
Daniel










