The UI was fun to work on. Okay, maybe not all the time. But the end product was rewarding.
As seen in the book,
The autocomplete search relies on a file called
auto.cgi being called and executed as the user types. For example when the user types “c”, a request is sent to the server for
auto.cgi?to=c. The server executes
c as the argument, returning all the users whose names contain the letter c.
As the user continues to type,
auto.cgi is called with the new arguments. For example typing “ca” calls
auto.cgi?to=ca, typing “cat” calls
auto.cgi?to=cat and so on.
auto.cgi code provided in the book was written for Perl. I had Ruby and Python installed on my computer and I was somewhat familiar with the languages. I didn’t want to install and learn Perl just for this one-off project. So, I ended up rewriting
auto.cgi. First to Ruby, then to Python as I could not get the built-in Ruby server to serve CGI files.
Even though Python has a dedicated CGI server, it didn’t work with my program (I’m not sure why). After a lot of searching, I eventually came across this tutorial and server script. With it the program finally worked!
I’m not sure if Resig did this intentionally, but copying and pasting the code as it appears in the book does not work. By the time you figure out what you need to add/edit/delete to make it work, you have pretty much learned how it works and more than you bargained for!
The final code can be found on Github.
Update (November 2015):
1 When uploading this post to the blog, I also wanted to upload the program so people could try it out. I suspected that if I had that much trouble getting the CGI file to work locally, getting it to work on another server would be a challenge. Haha. Little did I know just how deep the rabbit hole would be. Here’s a link to a post where I emerge out of the rabbit hole (warning - time travel).