0

Итак, я пытаюсь сделать AJAX одним solr doc из списка результатов в представлении «doc view». Я пытаюсь использовать AngularJS для AJAX для моего метода рендеринга и отображать документ таким образом, но я не могу заставить работать угловым способом, и я не уверен, что правильно делаю это на игровой стороне , Вы хотя бы хотели бы сказать мне, будет ли то, что я пытаюсь сделать, будет работать? Угловая ошибка исходит из docText.text(); вызов. Вот мой код:

Угловой код контроллера:

var docText = $resource("http://localhost:9000/views/full-doc-text.html", { 
     text: {method: 'PUT'} 
    }); 

    $scope.handleViewText = function(value) { 
     docText.text({doc: value}); 
    } 

Java код:

public static Result viewText() { 
     JsonNode json = request().body().asJson(); 

     //do stuff here 

     return ok(viewtext.render(json)); 
    } 

маршрут:

GET  /views/full-doc-text.html   controllers.Application.viewText() 

ответ

1

Я вижу три проблем с кодом выше;

1. Неверное определение ресурса docText. если вы прочитали инструкцию angularjs here, вы увидите, что $resource имеет 4 параметра. Первый - URL ресурса, второй - параметры по умолчанию, третий - пользовательские действия, а вперед - это параметры ресурсов, в которых последние три из них являются необязательными. В вашем коде вы передаете пользовательские действия в качестве второго параметра, который должен быть третьим. И так как у вас нет параметров в вашем ресурсе, второй параметр должен быть пустым. Таким образом, первая поправка:

var docText = $resource("http://localhost:9000/views/full-doc-text.html", null, { 
    text: {method: 'PUT'} 
}); 

2.You определить метод HTTP вашего text Действия как PUT однако в ваших маршрутах файл, который вы регулируете GET запросов для нужного действия. Вы должны изменить определение маршрута, как:

PUT  /views/full-doc-text.html   controllers.Application.viewText() 

3. PUT метод обычно используется для операций обновления при реализации услуги RESTFULL. В вашем случае вы ничего не обновляете. Поэтому я предлагаю использовать метод POST только для согласования.

+0

Спасибо! Извините за некоторые ленивый код (в основном маршрутизация, которая была/была исправлена ​​в файле маршрута, я просто не делал исправлений здесь, также был PUT, потому что я просто пытался что-то после неудачной попытки POST). – marcus

+0

Если посмотреть на это, маршрут /views/full-doc-text.html должен быть GET-вызовом, поскольку он будет обслуживать страницу full-doc-text.html на стороне клиента, поэтому мне нужно иметь " уловить "метод POST, чтобы поймать пост-вызов, обработать что-либо в JSON, а затем вызвать метод GET для работы с полнотекстовой страницей? – marcus

+0

извините, но я не могу разобраться в вашем случае использования. что я мог понять из вашего кода выше, это; вы отправляете некоторые данные json для создания бэкэнда, манипулирования им и последующего его рендеринга. в этом сценарии /views/full-doc-text.html маршрут должен соответствовать HTTP-методу с телом (PUT или POST). Метод GET не был бы разумным, поскольку вы отправляете данные с помощью $ scope.handleViewText. Если вы можете уточнить свой вариант использования, я могу предложить некоторое решение. удачи;) – ysf