- ベストアンサー
ページ全体をリロードしてしまう
読者が1クリックで自分の評価を投稿できるスクリプトを使いたいと考えています。1つのページに複数設置できる物です。 何とか無事に設置は出来たのですが、実際に動作させると、クリックするたびにページ全体をリロードしてしまい、しかもページのトップに戻ってしまいます。 これはなぜでしょうか。原因としてどのような事が考えられるでしょうか。ちなみにスクリプトを実際に置いているサイトではそのような現象は起こっておりません↓ www.masuga.com/thelab/ajaxrate/ よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「ページトップに飛んでしまう」という意味がようやくわかりました。 要はページをスクロールして、下のほうの星をクリックしたとき、その場で静止せず、ページの上まで戻ってしまう。ってことですね。 調べてみたところ、その点ちゃんと動いているサイトでは、ソースと記述がちがいます。 functions.php の 44 行目 を以下のように変更してみてください。 (変更前) <li><a href="#" title="<?php echo $ncount ?> out of 10" class="r<?php echo $ncount ?>-unit" onclick="javascript:sndReq('<?php echo $ncount ?>','<?php echo $id ?>','<?php echo $ip ?>')"><?php echo $ncount ?></a></li> ↓ (変更後) <li><a href="javascript:sndReq('<?php echo $ncount ?>','<?php echo $id ?>','<?php echo $ip ?>')" title="<?php echo $ncount ?> out of 10" class="r<?php echo $ncount ?>-unit"><?php echo $ncount ?></a></li> ちなみに、index.php の <?php rating_bar('1'); ?> の、''内は数字じゃないと駄目そうですね。 これをやるとようやくajaxっぽくなります。
その他の回答 (2)
- copymaster
- ベストアンサー率81% (83/102)
「配置した」とおっしゃっておりますが、ひょっとして、サイトからダウンロードしてきたソースのzipを展開して、単にWebサーバに置いただけではないでしょうか? 実際に動かしてみました。これは結構難しいですよ。 MySQLを使いますし、ソースは不完全(というか間違っているのでは?)なので修正が必要ですし。。。。 どーーーーしても動かしたい!ということでしたら、そのお気持ちもかなり理解できますので、以下の手順をご参考にしてください。 (さすがに、MySQLのインストールとか、設定とかまではとてもお教えできないので、本でも買って勉強してください。) --- 参考手順 --- 1.サーバ(PC)にMySQLをインストールする。(とりあえずMySQL4.1でやってみました) 2.MySQLにデータベースを作る。(とりあず、"ajax"という名前のデータベースを作る) 3.MySQLの接続ユーザにデータベース"ajax"の権限を与える。 (説明のため、仮にデータベースの接続ユーザを uuu パスワードを ppp とする。) 4. 2.で作ったデータベース"ajax"に接続して、ソースフォルダのreadme.txtの 1.にあるCREATE文を実行して、”ratings”テーブルを作る。 5.MySQLのデータベース"ajax"に接続して、readme.txtの2.のINSERT文を実行して、”ratings”テーブルに 1行作成。 6.functions.php の 8~11行目を以下のように書き換える。 $dbhost = 'localhost'; $dbuser = 'uuu'; $dbpass = 'ppp'; $dbname = 'ajax'; 7.functions.php 20行目など、 [変更前] $query=mysql_query("SELECT ・・(略)・・ ")or ・・・・ となっているところを ↓ [変更後] $query=mysql_query("SELECT ・・(略)・・ ",$conn)or ・・・・ にように書き換える。 同様に、30行目もおなじように書き換える。 8. functions.php の 26行目を以下のように書き換える。 [変更前] mysql_close($conn); ↓ [変更後] //mysql_close($conn); 9. rpc.php も6~7と同じように書き換える。 10.これらの編集したファイルが入っているajax_ratingフォルダをまるごと、 Apacheのhtdocsに配置する。 11.http://localhost/ajax_rating/index.php にアクセスする。 ここまでやれば、それなりに動いてくれますので、良しとしてください。 ただ、まだ多少動きが変ですが。。。。
お礼
おおおおおお、ありがとうございます! 私もわからないなりに、MySQLでデータベースの作成は やってみておりましたが、スクリプトにも問題があるのですね。具体的に修正したものまで書いてくださり本当にありがとうございます! 記述してくださった通りに(出来ていると思っています)修正をしてみた所、その動作も、より怪しさが減ったような気がしています。ただ、星をクリックをするとやはりページトップに飛んでしまいます。なぜなのでしょうか。もしかするとこれは私だけの現象なのでしょうか? こういう事が参考になるかどうかは判りませんが、 サーバーはxreaです。MySQL - 4.0.26です。 厚かましくてすいませんが、もしまた何かおわかりになりましたら教えてください。 よろしくお願いします!ありがとうございました!
- yambejp
- ベストアンサー率51% (3827/7415)
もしPHPでonClickごとにsubmitするような作り にしているなら当然リロードします。 リンク先はしりませんが、再描画なしに ページ情報をSQLに投げたりする場合は、 ajaxで行う手法があります。名前からして、 ajaxを利用しているのでしょう。 ご自身で調べて組み込んでみてはいかがでしょうか?
補足
ありがとうございました。 確かにこれはajaxです。自分でも調べていますが、初心者なもので未だに解決(理解)できていないです。ぜひお助けくださいお願いします。 スクリプトにはサンプル用の非常に簡潔なindex.phpが付属しているのですが、何もいじらずにアップロードしてアクセスしているのですが、クリックするとなぜかページトップに戻ってしまうのです。冒頭に <?php include('****.php'); ?> という一行があり、その後 <body>と</body>の間の好きな所に好きなだけ <?php rating_bar('任意の文字列'); ?> を挿入するというものなのですが。
お礼
またしても、おおおおおおお!!ありがとうございました! これですこれです。これが知りたかったのです。 一度見ただけではなんのことやらよく判りませんが、 わかっていないままに変更してみましたら確かに上手くいきました。 これを参考にしてまた勉強してみたいと思います。 本当にどうもありがとうございました!