2013-12-16 2 views
0

Это, наверное, глупый вопрос, но я не могу найти очевидный ответ.Переносный способ сделать запрос ajax от JS-кода

Я разрабатываю веб-приложение с использованием (Geo) Django для бэкэнд и листовки, среди прочего, для интерфейса. Я хочу сказать, что я хочу сделать url-вызов из моего JS-кода в бэкэнд Django. Что-то вроде этого:

$.ajax({ 
    type: 'POST', 
    url: '<A_URL_HERE>', 
    data: {"data":<MY_JSON_DATA>}, 
    dataType: 'json', 
    success: function(responseData, textStatus, jqXHR) { 
     console.log("Data saved"); 

    }, 
    error: function (responseData, textStatus, errorThrown) { 
     console.log("Problem saving the data"); 
    } 
}); 

Моя проблема с адресом. Я знаю, что cool URIs don't change, но, например, если я хочу поддерживать разные среды dev/test/prod без изменения этого параметра, как мне это сделать? В бэкэнд-части я слежу за хорошими практиками для подобных проблем, но у меня есть короткий опыт работы с JS и интерфейсом.

Большое спасибо заранее

+0

Используйте именованные шаблоны URL https://docs.djangoproject.com/ru/dev/topics/http/urls/#naming-url-patterns. –

+0

Спасибо! это действительно полезно. – jorgeas80

ответ

3

два возможных решения:

  1. Использование динамически генерироваться JavaScript, то есть файл JavaScript не жёстко статический файл. Вместо этого это шаблон, в котором бэкенд заполняется переменными (в частности, URL);
  2. Аналогично приведенному выше, за исключением того, что JavaScript является жёстко статический файл и, например, вы кладете URL-адресов в базе HTML (который генерируется из шаблона на стороне сервера):

base.html

<script>window.urls = { "my_url": "{{ my_url }}" };</script> 

my_script.js

$.ajax({ 
    url: window.urls.my_url, 
    ... 
}); 

С помощью этого вы можете создавать URL-адреса на основе настроек сервера.

+0

Downvoter: следить за комментариями? – freakish

+0

Я не тот, кто ниспровергнут. +1 на вашем подходе; это похоже на мое. Я использую URI.js, чтобы посмотреть имя хоста/домена, чтобы определить, к какому «базовому» URL-адресу выполняются мои службы. – Brandon

+0

Хорошо, это в основном работает. Благодаря! – jorgeas80

Смежные вопросы