AJAX c/ JSON

olá,

estou tendo problemas em um exemplo q estou implementando, usando Ajax com JSON. É para ser um tipo de auto-completador de texto, onde eu digito um pedaço do nome da cidade e me retorna as opções disponíveis. Na página de requisiçao tem o seguinte código (abreviado):

    
    var xmlhttp;
    
    //não IE
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }
    //Internet Explorer
    else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else {
        //objeto não suportado
    }

    function alteraCidade2() {
        var aux = document.getElementById("txtCidade").value;
        //if (length(aux) > 3) {
           var theUrl = "obterCidadesPorNome.jsp?nomeCidade=" + aux;
           xmlhttp.open("GET", theUrl, true);
           xmlhttp.onReadyStateChange = function() {
               if (xmlhttp.readyState == 4) {
                   criaComboCidades(xmlhttp.responseText);
               }
           }
           xmlhttp.send(null);
        //}
    }
    
    function criaComboCidades(AjaxResponse) {
        var data = eval(AjaxResponse);
        var htmlText = "<select name=selCidade size=10>";
        for (i = 0; i < data.length; i++) {
            htmlText = htmlText + "<option value=" + data[i].codigo + ">" + data[i].nome + "</option>";
        }
        htmlText = htmlText + "</select>";
        document.getElementById("comboCidade").innerHTML = htmlText;
    }



---no form----
            <input id="txtCidade" type="text" size="50" value="" onkeyup="javascript:alteraCidade2()"/>
            <div id="comboCidade"></div>

e na página de respostas, que devolve o JSON, chamada obterCidadesPorNome.jsp, o código é o seguinte:

<%@page contentType="text/xml"%>
<%@page pageEncoding="ISO8859-1"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<jsp:useBean id="cidadeDao" class="carros.dao.CidadeDao" />

<c:set var="cidades" value="<%=cidadeDao.list(request.getParameter("nomeCidade"))%>" />

[
<c:forEach var="cidade" items="${cidades}" varStatus="status">
   {
       codigo:'${cidade.codigo}', 
       nome:'${cidade.nome}'
   }
   <c:if test="${not status.last}">
       ,
   </c:if>
</c:forEach>
]

aí vem o problema, no IE, isso está funcionando corretamente, mas no Firefox, se eu insiro uma letra no campo, ele não mostra a resposta e, se vou no console do javaScript, aparece o seguinte erro:

Erro: erro de sintaxe Arquivo-fonte: http://localhost:8084/carros/obterCidadesPorNome.jsp?nomeCidade=MARE Linha: 7, Coluna: 1 Código-fonte: [{codigo:'7683', nome:'MARECHAL CÂNDIDO RONDON'},{codigo:'2793', nome:'MARECHAL DEODORO'},{codigo:'2929', nome:'MARECHAL FLORIANO'},{codigo:'655', nome:'MARECHAL THAUMATURGO'},{codigo:'9963', nome:'MAREMA'}]^

parece estar certo, não é? tenho q colocar algo antes dos resultados?

desde já,
obrigado