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