Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Grails控制器代理AJAX请求_Ajax_Grails_Cross Domain - Fatal编程技术网

使用Grails控制器代理AJAX请求

使用Grails控制器代理AJAX请求,ajax,grails,cross-domain,Ajax,Grails,Cross Domain,我有一个Javascript组件,当加载DOM时,它需要向我们的CDN发送一个请求,CDN可能位于不同的域中,以查看是否有该组件的内容。如果有,组件将自实例化(它是在模式中打开嵌入式视频的链接),如果没有,它将自毁。我的问题主要是关于我用来代理AJAX请求的Grails控制器 以下是伪代码中的JS: checkForVideoAssets: function(videoDataUrl){ Ajax.get(videoDataUrl, function(data){ if(data

我有一个Javascript组件,当加载DOM时,它需要向我们的CDN发送一个请求,CDN可能位于不同的域中,以查看是否有该组件的内容。如果有,组件将自实例化(它是在模式中打开嵌入式视频的链接),如果没有,它将自毁。我的问题主要是关于我用来代理AJAX请求的Grails控制器

以下是伪代码中的JS:

checkForVideoAssets: function(videoDataUrl){
    Ajax.get(videoDataUrl, function(data){
    if(data.responseText==='error'){
    //tear down the component
    }
    else{
    //if there is data for the video instantiate the component
    }
以下是Grails控制器:

def checkForModalVideoAsset = {
    def req = new URL("http://" + params.videoUrl + "/expense/videos/")
    def connection = req.openConnection()

    if(connection.responseCode != 200){
        render 'error'
    }

    if(connection.responseCode == 200){
        render req.getText()
    }
}
总之,JS从DOM中获取一个属性,该属性包含一部分URL(我们按照约定定义),将该URL发送给控制器,控制器尝试连接到该URL(在我们的CDN上),然后将该响应传递回XHR对象的responseText部分内的AJAX成功回调。这让我感觉不太理想,是否可以将实际响应传递回JS函数?

可能对您有用

我从来没有试过,只是试过类似的东西

def checkForModalVideoAsset = {

    def http = new HTTPBuilder("http://" + params.videoUrl )

    http.get( 
          path : "/expense/videos/",
          contentType : TEXT ) { resp, reader -> 
             response.properties=resp.properties //<-- to easy to work but why not try :)
             response << resp
             }
    }
def checkForModalVideoAsset={
def http=new-HTTPBuilder(“http://”+params.videoUrl)
http.get(
路径:“/expense/videos/”,
contentType:TEXT){resp,reader->

response.properties=resp.properties//这篇文章也可能对你有用: