Grails: интеграция с JavaScript - PullRequest
0 голосов
/ 02 июня 2010

У меня есть сервер Grails на http://mysite.com:8086/project/

ApiController отображает некоторый текст (html-код в моем случае) http://mysite.com:8086/project/api/lastorders

У меня есть другой сервер http://othersite.net/ - это простой сервер Apache с HTML-страницей.

Я хочу показать текст, возвращенный с сервера, на моей странице.

Я пробовал:

    <script type="text/javascript">
new Ajax.Request( "http://mysite.com:8086/project/api/lastorders", {
  method:  'get',
  onSuccess:  function(response){
    alert(response.responseText);
  },
  onFailure:  function(){
    alert('ERROR');
  }
});
    </script>

Но ответ пустой ...

Ответы [ 2 ]

1 голос
/ 02 июня 2010

Если вы пытаетесь получить доступ к http://mysite.com:8086/project/api/lastorders из http://othersite.net/,, вы не можете этого сделать из-за междоменных ограничений. Если вы хотите обойти это, самый распространенный способ - установить http://othersite.net/, чтобы прокси-запрос к серверу, от которого вы хотите получить данные, и затем вернуть результат этого запроса. Есть и другие решения, такие как использование фреймов и т. Д.

Для получения дополнительной информации см. http://www.w3.org/TR/XMLHttpRequest/ и выполните поиск «того же источника» - это политика, которая ограничивает вас здесь.

0 голосов
/ 29 декабря 2011

Когда вы используете Groovy под одеялом, вы создаете прокси-сервер, например так:

class SomeController {
   def someAction = {
      render(new URL(params.url).text())   
   }
}

и ваш javascript вызывает этот контроллер / действие

new Ajax.Request( "${createLink(controller: "some", action: "someAction", params: [url: "http://xxx.yy"])}", {
   method:  'get',
   onSuccess:  function(response){
     alert(response.responseText);
   },
   onFailure:  function(){
     alert('ERROR');
   }
})
...