Grails:JavaScript集成
我有grails服务器 ApiController呈现一些文本(在我的例子中是html代码) 我有另一个服务器-这是一个带有HTML页面的简单apache服务器 我想在我的页面上显示从服务器返回的文本 我试过: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
<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');
}
})