DOM がロードされたときに、このコンポーネントのコンテンツがあるかどうかを確認するために、別のドメインにある可能性がある CDN にリクエストを送信する必要がある Javascript コンポーネントがあります。存在する場合、コンポーネントは自己インスタンス化され (モーダルで埋め込まれたビデオを開くためのリンク)、存在しない場合は自己破壊します。私の質問は主に、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 をコントローラーに送信し、コントローラーは (CDN で) その URL への接続を試みてから、その応答を、XHR オブジェクトの responseText 部分内の AJAX 成功コールバックに渡します。これは私にとって理想的とは言えません。実際の応答を JS 関数に戻すことは可能ですか?