2017-06-06 8 views
0

リンクをクリックしたときにonClick関数を追加したかったのです。 基本的には、「クリック」をクリックするたびにdivに液体コードが追加されます。 液体コードを追加するだけですが、液体コードを追加するコンテンツではなくコードのみを追加します。ここに私のコードは次のとおりです。液体コードの読み込みコマンドAJAX

{% include 'cod-checker' %} 

liquidcode.html

インデックス

<a href="#" id="myLink">Click me!</a> 
    <div id="result"></div> 

    <script src="http://code.jquery.com/jquery-latest.min.js" 

type="text/javascript"></script> 
    <script> 
     $("#myLink").on("click", function(){ 
     $("#result").load("liquidcode.html"); 
     }); 
    </script> 

私は "私をクリックしてください" をクリックした後に何を得るこの

{%が 'タラチェッカー' %を含ん}されます
+0

'liquicode.html'は単なるHTMLファイルで、それはちょうど、レンダリング、解析されることになってイマイチ。たぶんあなたは最初にそれを正規のhtmlに解析し、それを '読み込み 'たいと思うかもしれません。 –

+0

@FreemanLambda正しい、つまり私が解析できないものです。また、ロードするコンテンツがプリロードされていないことを確認したいのですが、これはページの読み込みの遅さの問題を避けるためです。 –

+0

私は、あなたのサーバーからエンドポイントにクリックしてAJAXリクエストを行うことをお勧めします。そのエンドポイントに 'liquidcode.liquid'の解析されたhtml版を提供させます(ここではファイル名を仮定します)。 –

答えて

0

液体がサーバー側にレンダリングされるため、jqueryを使用してページを読み込んだ後に液体をレンダリングできなくなります。この問題は、最初から 'liquidcode.html'にあるコードを挿入することで回避できますが、displayをnoneに設定してdivにクラスを追加することで隠すことができます。ユーザーが「クリック」をクリックすると、そのクラスを削除できます。

+0

問題は、画像をロードするときにクリックした後にしかロードしたくないということです。私はここでページ速度を改善しようとしています。 –

+0

これは面白いです、私は実際にはまったく同じことを現時点では実際にやっています。私は現在、バイナリデータからバイナリイメージデータを取得し、バイナリデータからイメージを再作成し、ajaxリクエストが完了した後にイメージを表示するためにajaxを使用しています。それはあなたの状況にも役立ちます。イメージが公開されているかどうかを心配する必要がなければ、バイナリデータを扱う必要はありません。 ajaxリクエストが完了したら、imageタグのsrcプロパティを変更するだけです。 – OneCaseTwoCase

+0

これを行う方法がわかりません。私は現在、自分のページからCODオプションを隠そうとしており、ユーザーが見たい場合にのみ表示させようとしています。しかし、私は画像のための同じ機能を持っていると思います。コードを理解したら、それを他のものに加えることができます。 –

0

私のコメントを拡大するためにここに答えると、質問作成者から実際のコードのリクエストがあったためです。 ANSERの基本である

私のコメント、:

私はあなたのサーバーからエンドポイント に、クリックにAJAX要求を行うことを示唆しています。そのエンドポイントに、 というあなたのliquidcode.liquid(ここではファイル名と仮定)の解析済みHTMLバージョンを提供します。クライアント側では

は、jQueryの支援AJAXは、次のようになります。

$("#myLink").on("click", function() { 
 
    $("#result").load("myAwesomeServerEndpoint", function() { 
 
    console.log('BOOM, server-parsed HTML was successfully loaded inside #result'); 
 
    }); 
 
});

サーバ側に関しては、私は本当にあなたが使用しているフレームワーク見当もつかない。 (Ruby on Rails?)

MVCの方法では、 "myAwesomeServerEndpoint"というルートを登録する必要があります。 そのルートにコントローラを割り当てます(例: "myAwesomeServerController")。 このコントローラーはあまりおこないません。liquicode.liquidテンプレートをレンダリングするだけです。

お使いのコントローラ用の擬似コード(私はRuby on Railsのを知らないので):

return HtmlResponse(render("liquicode.liquid")); 

応答がHTMLとして送信されていること、およびルートがAJAX要求にさらされていること、そしてそれはそれでなければなりませんことを確認してください。

繰り返しますが、これは解決策が、ただ荒いconcenptではありません

関連する問題