On Aug 17, 4:37 pm, Richard Harding <[email protected]> wrote:
> On Tue, Aug 17, 2010 at 5:52 PM, Wyatt Baldwin
>
> <[email protected]> wrote:
> > I'm wondering if anyone has any good ideas on how to generate URLs in
> > JavaScript code that take into account the application's URL prefix.
> > What I've done is implement a couple of JS helpers to sort-of mimic
> > `pylons.url`, and this seems to work pretty well.
>
> What I do is add a variable to the tpl context:
>
> tmpl_context.app_url=request.application_url
>
> then in my wrapper.mako file which wraps all of my html pages I define
> this as a JS variable before all other JS in the <head> tags.
>
> <script type="text/javascript" charset="utf-8">
> app_namespace.app_url = '${c.app_url}';
> </script>
>
> And now in all my JS files included/etc I can use
> app_namespace.app_url for all actions.
So, does your JS code look like this?:
my_favorite_js_library.async_request({
url: app_namespace.app_url + '/controller/action/id'
});
That's what my first approach looked like (and essentially that's all
my little function is doing).
> > In my Mako template, I do this:
>
> > <script>
> > var MY_NAMESPACE_CONFIG = {/* config values */};
> > MY_NAMESPACE_CONFIG.urls = {
> > prefix: '${url("/").rstrip("/")}'
> > };
> > </script>
>
> > And in my util code, there's this function:
>
> > url: function (path, params) {
> > // It's assumed that ``path`` starts with a forward slash
> > path = [MY_NAMESPACE_CONFIG.urls.prefix, path].join('');
> > if (params) {
> > var query_string =
> > my_namespace.util.paramsToQueryString(params);
> > path = [path, query_string].join('?');
> > }
> > return path;
> > }
>
> > Not that this is overly complicated, but does anyone know of a better
> > or simpler approach?
>
> > On a related note, how do you pass config values from Pylons to your
> > JavaScript code? I convert a subset of my Paste config to JSON in
> > `load_environment` and decode it in the template.
--
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en.