2016-08-17 8 views
0

でレンダリングサイトコアにAJAXを使用しました。 Sitecore 6.5に基づいた古い既存のプロジェクトがあり、.NET Framework 3.5でXSLTでコンテンツを表示しました。私はサイトコアと.NETに新しいですXSLT

今、私はページをリフレッシュすると、新しいコンテンツを生成することができない必要があるように、AJAX呼び出しを行うことができますページを作成するために必要なもの。私はAJAXのPHPコールには慣れ親しんでいますが、.NETのものはかなり混乱しています。

私はGoogleで検索し、チュートリアルのほとんどはカミソリビューのレンダリングに基づいていました。

誰も私にどのように私は私の目的を達成するために行うことができます全体像を提供することはできますか?

次の手順が正しいか、私は疑問に思う

  1. .xsltコンテンツ
  2. を取得するために.ashxを作成
  3. に渡されるURLパラメータの一致に基づいて異なるコンテンツをレンダリングするための.xsltを作成します。 .ashxに
  4. JavaScriptのAJAX呼び出しとHTML

にXMLコンテンツ私は従うことができます任意の例を変換しますか?

ありがとうございます!

=========================

更新: 私は上記の流れを試してみましたが、成功したAJAXでのHello Worldを印刷することができます。 しかし、私は別のパラメータを使用して、次の.ashxファイルにXSLTからコンテンツを取得する方法がわからないのですか?

そして、.ashxがPOSTメソッドによって訪問されたかどうかを確認するのに役立つHttpPost/IsPostBackがありますか?

enter image description here

+0

あなたは助けることができる[この](http://stackoverflow.com/questions/1349118/jquery-ajax-post-results-in-500-internal-server-error)質問を参照することができます君は。 –

+0

ありがとうございました。私は上記の質問を更新しました。私はAJAXをうまく呼び出すことはできますが、XSLTと.ashxの間の通信を処理する場合は難しいです! – HUNG

+0

私はあなたの質問に具体的に答えることはできませんが、HttpContextオブジェクトのドキュメントを参照することで、汎用ハンドラを操作する方法を理解するのに役立ちます。https://msdn.microsoft.com/en- us/library/system.web。httpcontext(v = vs.110).aspx –

答えて

0

私は最終的に、次の手順で問題を解決しました。

  1. サイトコードのコンテンツを表示するための.ashxを作成します。 私は.ashx、.aspx、.asmxと比較しました。 .ashxが最良の選択だと思われます。私は上記のいくつかの検証コードを除去

    using Sitecore.Configuration; 
    using Sitecore.Data; 
    using Sitecore.Data.Fields; 
    using Sitecore.Data.Items; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    
    namespace MYPROJECT.Web 
    { 
        /// <summary> 
        /// Summary description for AjaxTest 
        /// </summary> 
        public class AjaxTest : IHttpHandler 
        { 
         public void ProcessRequest(HttpContext context) 
         { 
          context.Response.ContentType = "text/html"; 
          string ID = context.Request.QueryString["ID"]; 
          Database master = Factory.GetDatabase("master"); 
          Item source = master.GetItem("/sitecore/content/Home/MYPROJECT/gallery"); 
          Item[] items = source.GetChildren().ToArray(); 
          context.Response.Write(items[ID].Fields["image"].Value); 
         } 
    
         public bool IsReusable 
         { 
          get 
          { 
           return false; 
          } 
         } 
        } 
    } 
    

p.s。

  1. JavaScript AJAXが.ashxを呼び出します。

    $j('#ajax_test').click(function(){ 
         $j.ajax({ 
          //type: 'POST', 
          url: '/AjaxTest.ashx?ID='+$j('#inputunmber').val(), 
          //dataType: 'html', 
          //data: form.find(':input').serialize(), 
          success: function(response) { 
           $j('.test_result').append(response); 
          }, 
          error: function (xhr) { 
           alert("Error:" + xhr.responseText); 
          } 
         }); 
        }); 
    
関連する問題