|ajax() function doesn't work properly (returns parent page)||Dolgion Chuluunbaatar||5/2/12 12:09 AM|
I am trying to make the echo example work which is in the online book.
It works fine in my index function, but it doesn't work in any other function.
I use the same callback method in both views:
and the methods (one is index, the other is called storeadmin) have identical code and views as well:
the view is:
In index, the ajax call works as it should, but in storeadmin, I get the entire page pasted into the target div.
I put 2 screenshots of the pages for both methods to make it more clear.
do you have any idea why this could be?
|Re: ajax() function doesn't work properly (returns parent page)||Anthony||5/2/12 9:15 AM|
Try going to http://127.0.0.1:8000/inventoryapp/default/index/ (note the trailing "/"), and you should see the same problem. On the storeadmin page, the problem should go away if you exclude the trailing "/" from the URL.
The problem is, in the call to ajax(), the URL is just 'echo'. Because it doesn't start with a "/", the browser interprets that as being relative to the current URL path, which it assumes ends after the last "/". If the current URL ends in a "/", the browser just adds "echo" to that and makes the Ajax call to the current URL (web2py will just see "echo" as a URL argument rather than a function). If you check the network traffic on the storeadmin example, you should see the Ajax call going to http://127.0.0.1:8000/inventoryapp/default/storeadmin/echo.
The best approach is to use the full URL in the Ajax call, using the URL() function:
We should probably change that in the book.