Hay varios errores. No cierras el paréntesis cuando invocas a la función en el select:
    
Debe ser así:    
Nunca envías un valor ni indicas una ruta en la función Ajax. No puedes esperar que funciones si no le proporcionas datos para realizar la petición asíncrona.    
Código Javascript
:
Ver original- function InsertData(str){ 
-     if (window.XMLHttpRequest) 
-         xmlhttp = new XMLHttpRequest(); 
-     else 
-         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
-   
-     //Acá indicas el archivo que recibirá el dato y el método de envío 
-     xmlhttp.open("GET", "ejemplo.php", true); 
-   
-     xmlhttp.onreadystatechange = function(){ 
-         if (xmlhttp.readyState==4 && xmlhttp.status==200) 
-             document.getElementById("txtHint").innerHTML = xmlht tp.responseText; 
-     } 
-   
-     //Acá envías el dato 
-     var dato = "dato=" + str; 
-     xmlhttp.send(dato); 
- } 
En el archivo 
ejemplo.php, recibes el dato de esta manera:    
Lo procesas y generas una respuesta que será devuelta de manera asíncrona al primer archivo. Esto creo que está de más, por eso lo saqué:    
Código Javascript
:
Ver original- if (str == ""){ 
-     document.getElementById("txtHint").innerHTML=""; 
-     return; 
- } 
Recuerda que, en este ejemplo, el archivo 
ejemplo.php es en donde se procesará el dato enviado, por lo que debes poner el nombre del archivo que usas para realizar el procesamiento del dato. Implementa estos cambios y nos cuentas cómo te fue, saludos.