2010-12-16 7 views
0

メインテンプレートの中に小さなテンプレートを表示して、ajax reposneに基づいて小さなテンプレートを表示する必要があります。私はajaxリクエスト後にパラメータを取得する段階に入っています。Smartyフェッチvsスマートディスプレイ

$smarty=new Smarty(); 
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
    &&$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') 
{ 
    // echo "<pre>"; 
    //print_r("Yes"); 
    //echo "</pre>"; 
    echo $smarty->fetch('../templates/small-page.tpl'); 
} else { 
    $smarty->display('../templates/index-page.tpl'); 
} 

は、ここでecho文が.Whenに動作していない私は、HTMLは「はい」が含ま放火犯で見ることができますprint_r関数のコメントを外しますが、ページに表示されていません。どんな助けもありがとうございます。

+0

クライアント側のコードは何ですか?それをページに表示するためにajax呼び出しの結果を使用していますか?結果を悪用せずにゲットをしているようです。スマートなコードが正しいようです。 –

+0

@jeromeこれはjsコードです。クライアント側でresponsexmlとしてスマートテンプレートを表示する方法がわかりません。side.xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status = = 200) { responseTextの結果かのresponseXML としてSmartyのテンプレートをdiplayする方法がわからない//}私は警告(xmlhttp.responseText)を試してみました } –

答えて

1

スマートテンプレートの出力がXML形式の場合は、xmlhttpのresponseXMLプロパティを使用できますが、PHPが正しいMIMEタイプを出力している場合にのみ使用できます。

試してみてください。

header("content-type: text/xml"); 
echo $smarty->fetch('../templates/small-page.tpl'); 

し、クライアント側で、

alert(xmlhttp.responseXML); 

それが動作するかどうかを教えてください!

+0

@ Jerome.Awesomeありがとう、私はあなたの助けに感謝します。最後に私たちはリクエストや応答を送信するたびにMIMEタイプを設定する必要がありますか? –

+0

通常、あなたはMIMEタイプを気にする必要はありません。具体的には、MIMEタイプが設定されていない場合、ブラウザはresponseXMLを埋めることを試みません。あなたが今あなたのために働くなら、あなたは「答え」を受け入れることができますか?どうも。 –

1

私はSmartyがあなたの問題に関わっているとは思わない。 Smartyはコンパイルされたテンプレートの処理から何が出ても出力します。

「はい」と表示されます。クライアント側では

、あなたは

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     //Not sure how to diplay a smarty template as a result of responseText or responseXMl 
    } 
} 

responseTextは、 "はい" を開催しますしています。たとえば、次のように試してみてください:

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     alert(xmlhttp.responseText); 
    } 
} 

これが機能する場合は、テキストで何をしたいかを決める必要があります。

+0

、私は、XML出力を返していますので、私xmlが返されているのを見ることができますが、内部に完全なxmlがあります。これはDOM要素を使ってトラバースできません。 responseXMLがnullであるというメッセージが表示されます。私はそれをHTMLとして渡す場合、私は完全なページを取得します。ここから行くための任意の方向? –