2015-09-10 3 views
0

У меня есть (с пружинным питанием) Java-приложение, которое имеет несколько вызовов AJAX. Проблема в том, что я использую контекст приложения (/spring-mvc), чтобы иметь возможность доступа к серверной функциональности.AJAX вызов без контекста Java-приложения

var api = '/api/v1'; 
var context = '/spring-mvc' + api; 

$.ajax({ 
    type: 'GET', 
    url: context + '/users/' + $('#user-id').val() 
}).done(function (response) { 
    callback({ data: response.user, binding: response.binding }); 
}).fail(function (jqXHR, textStatus, errorThrown) { 
    callback({ jqXHR: jqXHR }); 
}); 

Теперь моя проблема, когда я должен разместить его где-нибудь еще, и я не могу контролировать контекст приложения, вызовы AJAX, в конечном счете неисправного поскольку контекст само приложение жестко закодирован в JavaScript.

Есть ли способ достичь этого без изменения переменной context во всех файлах JavaScript? Что-то вроде:

$.ajax({ 
    type: 'GET', 
    url: '/api/v1/users/' + $('#user-id').val() 
}).done(function (response) { 
    callback({ data: response.user, binding: response.binding }); 
}).fail(function (jqXHR, textStatus, errorThrown) { 
    callback({ jqXHR: jqXHR }); 
}); 

Я видел, что несколько раз во многих приложениях, но я не могу понять его, как они делают это.

Примечание: Веб-приложение развернуто в том же файле WAR; Я хотел бы избежать, чтобы попытаться понять это, выполнив манипуляции с URL в JavaScript.

+0

'/ api/v1 /' обычно эквивалентен контекстному пути весной, а ваш вопрос = – messerbill

+0

Да, но если я не добавлю контекст приложения к «url» в вызовах AJAX, он также не работает , Я хочу, чтобы получить динамический контекст приложения (или какой-то) –

ответ

1

Deadly просто, вы можете включить в контекст со скрытым входом, например

<input type="hidden" id="ctx" name="ctx" value="<applciation_context_here>"/> 

то в вашем JS

var context = document.getElementById("ctx").value/*getAttribute('value')*/ + api; 


или лучший способ приобрести текущее окно местоположение (путь) , и некоторые манипуляции с строкой для получения контекста
update0:

ФАКТЫ:

Пусть говорят, что вы будете иметь /a, /b и /c контексты, я не знаю, но, как правило, они будут отображаться в a.com, b.com и c.com и контекст будет идентифицирован сервером как запрошенный хоста, такие как следующие

a.com -> local_host/a 
b.com -> local_host/b 

Но если вы не собираетесь, как указано выше, так как вы создаете файл JSP, вы можете установить путь контекста как скрытый входной подход

+0

Я пытаюсь не манипулировать URL здесь, хотя он также действителен; подход со скрытым полем аналогичен тому, как иметь переменную 'context' в файлах JavaScript –

+0

интересно, в чем проблема с манипуляцией URL! более логичным способом будет сопоставление доменов с контекстом (проверьте обновление) –

+0

ОК, возможно, я забыл об этом: мы не используем серверную технологию, просто HTML, в противном случае получение контекста приложения будет тривиальным. Когда я говорю «контекст приложения», это не домен, а фрагмент URL-адреса, на котором запущено ваше приложение; обычно то, что приходит после ': ', например. 'HTTP: // кругосветное: 9080/приложение/контекст апи/v1' –

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