• ベストアンサー

PHP+SmartyとAjax

php+smartyを最近勉強しているものです。 一昨日ぐらいに、Ajaxを知ってから、こちらの方が、いろいろな表現ができるし、動作も速いので、良いと思ったのですが、php+smartyでは作れるが、Ajaxでは作れないサイトというのは、ありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がるです。 > 簡単に言うと、htmlファイルで、javascriptによって、サーバーサイドスクリプトを呼び出して、一部のデータのみを更新するやり方だと思っています。 おおむねそんなところでよいと思います。 > PHP+Smartyで、サイトを作っていた人が、ajaxで作ろうと思ったときに困ることでもあれば、教えてほしかったのです。 んと…これは「PHP+Smartyは把握している」「Ajax単体&JavaScriptは理解している」人が「組み合わせたときに」という事でしょうか? その場合…私が知っている限りでは「特に問題なく」だと思います。 或いは「ブラウザ毎の差異を吸収する」ことを丁寧に考える場合「どのように吸収していくか」は問題になるとは思いますが。 # 個人的には「テンプレートファイルを分離する」方向性です。 > >「PHP+Smarty+Ajax」という方向性もあり得ますし。 > あの、これは、まったくわからないのですが、ajaxはもともと、htmlに、javascriptを組み込むものですよね? > smartyの出番は、いつになるのでしょう? んと…単純に「PHPプログラムで処理した結果発生する動的なHTMLの出力」はすべてSmartyで、になると思うのですがどうでしょうか? # PHP単体でも無論可能ですが、Smartyを使う場合、PHP側にHTML要素かいたりprintだのechoだの書いたりということは0になると思うのですが。 なにか不明疑問などありましたらまた書いていただければと思います。

noname#113226
質問者

お礼

いろいろ、お答えいただき、ありがとうございます。 ですが、すいません。やっぱり「PHP+Smarty+Ajax」の組み合わせが、ありうるのが、わかりません。 Ajaxにおいて、PHPは、サーバーとの通信のみに使われているのではないのでしょうか? たとえば、index.htmlがあったとして、ここに、サーバーからデータを持ってくる役割をするPHPファイルを呼び出すためのJavascriptが書いてあり、PHPファイルの結果は、index.htmlに反映される。という仕組みがAjaxだと思っております。 もし当たっているのであれば、Smartyのテンプレートを用意する場面がないと思うのですが・・・。どうでしょうか?

その他の回答 (4)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.5

がるです。 Ajax思いっきり使ったサイトですか……… あまり知らないのですが、googleさんのgmailなんかはけっこういい感じなのではなかろうか、と思います。 google mapは事実上のAjaxの走りですし。 そういう意味では、やはりgoogleさん強し、ですねぇ。

noname#113226
質問者

お礼

う~ん。そんなに、普及しているものでもないのですかね。 すいません。smartyの話に戻っちゃうんですが、smartyのテンプレートファイルに、直接はジャバスクリプトを、書けると思うのですが、lightboxなどの外部ジャバスクリプトを使いたい場合は、サーバーのどこにおけば良いのでしょうか? テンプレートのフォルダにおいても、読み込んでくれないみたいです。

noname#113226
質問者

補足

すいません。 質問が、少し変わっていってしまいました。 また、別の機会に質問しますので、よろしくお願いします。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.4

がるです。 > XMLで、データを受け取るというのは、知っていました。 > ですが、XMLに動的な部分があるのが、わからないのです。 > XMLというのは、保存するときの形式ではないのですか? > CSV形式を、よりコンピュータにわかりやすいように保存しているのだと思っております。 ああなるほど私も理解しました。 んと。XMLは「データの表現形式」なのですが。 その「データ」は「すでにファイルとして保存されている」こともあれば、場合によっては「DB等からその場で動的に作成する」場合もあります。 なので、特に「動的に」データを作成する場合において、XMLが「動的に」揺れ動く感じになります。 具体的には… RSSとかがモロにそのイメージになりますし。たとえば「アクセス解析の情報をXMLで取得する」なんてぇときも動的ですね。 ってなあたりでどうでしょうか?

noname#113226
質問者

お礼

動的というのは、そういうことですか。 RSSは、一回実装したことがあるので、わかりました。 いろいろ、教えていただいてありがとうございます。 それで、ずうずうしいお願いなのですが、もし、Ajaxの技術をおもいっきり使ったサイトなどがあれば、教えてもらえないでしょうか。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

がるです。 > いろいろ、お答えいただき、ありがとうございます。 > ですが、すいません。やっぱり「PHP+Smarty+Ajax」の組み合わせが、ありうるのが、わかりません。 なるほど了解です。 んと…詳しく説明するのに適しているサイトなのかは微妙なのですが、可能な限り、とことんまでおつきあいさせていただければ、と思います ^^ > Ajaxにおいて、PHPは、サーバーとの通信のみに使われているのではないのでしょうか? Ajaxの通信において「AjaxはPHPプログラムを叩く」という点については、Yesだと思います。 > たとえば、index.htmlがあったとして、ここに、サーバーからデータを持ってくる役割をするPHPファイルを呼び出すためのJavascript が書いてあり、PHPファイルの結果は、index.htmlに反映される。という仕組みがAjaxだと思っております。 はい。これについてはYesです。 > もし当たっているのであれば、Smartyのテンプレートを用意する場面がないと思うのですが・・・。どうでしょうか? なるほど。 んと…Ajaxは「PHP(には限らないのですが)プログラムを叩く」、ここについては認識が一致してるかと思います。 この辺を専門用語でrequestとか言います。 で、PHPプログラムは「何かを」Ajaxに返してきます。 これをresponseとか言います。 requestについては、まぁgetのパラメタとか、postでとか、適当に渡すとして、なのですが。 Ajaxは「responseとして何を受け取るのか」という部分が、ここで重要になります。 基本的にはXMLのデータを返す、のですが。 XMLである以上、そこに「動的な部分」と「静的な部分」があります。 だとすると、XMLのテンプレートを用意して、という手法は、あり得ます(この場合においては「あり得ます」程度です)。 次に。 最近よく見る実装なのですが。 XMLというよりXHTMLをresponseとして返して「そのままdocument.writeする」Ajaxを多々みるのですが。 この場合、XHTMLということで、当然ながらデザイン要素が絡みまして。 このケースですと、まず確定でテンプレートエンジン使った方がメンテナンスなどが容易になります。 たとえば「Ajaxでのやりとりが純粋に動的なデータだけ」なら、Smartyを使わない状況もあり得るのですが。 実際には、Ajaxがresponseとして受け取るデータは「デザイン要素を含む」事も多いので、その場合、Smartyを使う状況になります。 という説明でどうでしょうか? また不明点などあったら書いていただけると。…多分次に書き込めるのは、明日の夜になってしまうと思うのですが。

noname#113226
質問者

お礼

詳しく説明していただいて、ありがとうございます。 私のわかっていない部分が、どこなのかがわかってきました。 おそらく、この部分が、私に想像できていないのだと思います。 >基本的にはXMLのデータを返す、のですが。 >XMLである以上、そこに「動的な部分」と「静的な部分」があります。 >だとすると、XMLのテンプレートを用意して、という手法は、あり得ます >(この場合においては「あり得ます」程度です)。 XMLで、データを受け取るというのは、知っていました。 ですが、XMLに動的な部分があるのが、わからないのです。 XMLというのは、保存するときの形式ではないのですか? CSV形式を、よりコンピュータにわかりやすいように保存しているのだと思っております。 smartyをどこで使うか、については、わかりました。 帰ってきたデータを表示する時につかうのですよね?

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。一応その道のプロです。 んと…「PHP + Smart」と「Ajax」は、同系列で比較するにはちょっと無理があるモノになりますので、完全に別物としてとらえられた方がよろしいかと思います。 PHPはプログラム言語ですし、SmartyはPHPで実装されたテンプレートエンジン(Smarty以外にも色々ありますが)です。 で、Ajaxは、本来的には「JavaScriptを使って、Document Object Modelなどを用いてデータを非同期に取得し、XHTMLとCSSによってダイナミックな表示及び相互作用及びデータ操作を行う」技法です。 ですので「PHP+Smarty+Ajax」という方向性もあり得ますし。

noname#113226
質問者

お礼

お答えありがとうございます。 一応、Ajaxがプログラミング言語の名前でないことはわかっています。 簡単に言うと、htmlファイルで、javascriptによって、サーバーサイドスクリプトを呼び出して、一部のデータのみを更新するやり方だと思っています。 PHP+Smartyで、サイトを作っていた人が、ajaxで作ろうと思ったときに困ることでもあれば、教えてほしかったのです。 >「PHP+Smarty+Ajax」という方向性もあり得ますし。 あの、これは、まったくわからないのですが、ajaxはもともと、htmlに、javascriptを組み込むものですよね? smartyの出番は、いつになるのでしょう?

関連するQ&A