Grails:JavaScript集成

Grails:JavaScript集成,javascript,ajax,grails,prototypejs,Javascript,Ajax,Grails,Prototypejs,我有grails服务器 ApiController呈现一些文本(在我的例子中是html代码) 我有另一个服务器-这是一个带有HTML页面的简单apache服务器 我想在我的页面上显示从服务器返回的文本 我试过: <script type="text/javascript"> new Ajax.Request( "http://mysite.com:8086/project/api/lastorders", { method: 'get', onSuccess: f

我有grails服务器

ApiController呈现一些文本(在我的例子中是html代码)

我有另一个服务器-这是一个带有HTML页面的简单apache服务器

我想在我的页面上显示从服务器返回的文本

我试过:

    <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>

新的Ajax.Request(“http://mysite.com:8086/project/api/lastorders", {
方法:“get”,
onSuccess:函数(响应){
警报(response.responseText);
},
onFailure:function(){
警报(“错误”);
}
});

但响应为空…

如果您试图从访问,由于跨域限制,无法执行此操作。如果您想绕过这个问题,最常见的方法是将请求设置为代理服务器(您感兴趣从中获取数据的服务器),然后返回该请求的结果。还有其他解决方案,如使用iframe等


有关更多信息,请参阅并搜索“同源”——这是限制您在此使用的策略。

当您在幕后使用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');
   }
})