Any of you that are AJAX developers can skip this post. I’ve just recently started concentrating on AJAX for a project I’m working on. In the past, I’ve used PHP to parse XML returned from various web services and it goes off without a hitch. I also wrote my own web service in PHP for this project.
The project is basically a site that works with the eBay API to pull the most watched items for any keyword search phrase and by category. I’ve pulled all the categories to a local database. This will allow me to avoid using an API call every time someone clicks through different categories. All the categories are in an AJAX menu system I wrote. The menu is completely dynamic and loads the categories and subcategories using calls to my web service. This part was fun because it gave me the opportunity to create a web service and this in itself was worth the time I’ve spent on the whole project.
I ran into a road block however, because I wasn’t aware that AJAX doesn’t allow cross-domain calls. At least from what I see, it doesn’t. I started getting an error 1012 “Access to restricted URI denied’.” This means that the actually calls I would like to make to the eBay API won’t work through AJAX. I wrote the code to try to do so and kept getting this error. That’s when I found out that it wasn’t possible to do this using AJAX. It’s fine in PHP, however. So, here is the work-around I’m brain-storming. I know it’ll work. It’s just a matter of doing it.
The work-around is simply to write another web service in php that makes the calls for me. Then use AJAX to pull the info dynamically from the localhost. The up side to this is I can also log various stats about the calls within the web service as well. I could create a table in my database to log the searches, time of day, IP address of user, and so on. This will allow me to understand how the app is being used, who’s using it, when they are using it, and what they are using it for.
This is also known as using AJAX through a proxy. Where the proxy is the web service on the localhost from which one can make an AJAX call to.
So, I’m off to code another web service.