小島健太郎
kojim****@gmail*****
2013年 1月 12日 (土) 21:26:06 JST
ご回答ありがとうございます。 ご提案いただいたことに、なるほどと納得し、ビューのinputの onFocus="suggestOn(0,'POST1','ADDR1','suggest.php')部のsuggest.php部を メソッドとしてコントローラへ記述し、c_Test/suggestとして呼び出すことで無事に解決することができました。 コントローラ内に記載したことにより「split is deprecated」といったエラーに遭遇しましたが そこはsplit⇒explodeへ変更することで解決しました。 今回は私の理解不足と質問のわかりにくさでご迷惑をおかけしましたが、おかげさまで大変勉強になりました。 いくつかCIを使って簡単なシステムは作ってはきましたが、まだ「1メソッドからDB検索して1画面呼び出す(しかも1画面:1ファイル)」という入門書レベルのままの自分であることに気づきました。 どうしたら一皮むけれるのでしょうかね...。 今後ともよろしくおねがいいたします。 小島 ************************************************ 2013年1月12日 16:22 柴田 <philo****@gmail*****>: > 小島様 > > はじめまして。 > 柴田と申します。 > > 多分suggest.phpを呼び出さないと行けないがCIでどうやって > 呼び出すのかに迷ってらっしゃるのでは。 > > 一つの例ですが、 > コントローラc_test.phpにsuggestというfunctionを作成し、その中に > suggest.phpの内容を入力して下さい。 > > ViewのinputのonFocus="suggestOn(0,'POST1','ADDR1','suggest.php')部分の > suggest.phpを先ほどのfunctionを呼び出す形に変えます。 > suggesut.phpを > http://localhost/conference/index.php/c_Test/suggest > として下さい。 > > ※余談ですがsuggestメソッドを呼べば良いのでCIっぽく<?=site_url(c_Test/ > suggest)?>などの書き方も出来ます。 > > これで、inputの内容を書き換えればsuggestメソッドが呼ばれるので、うまく > 行くかと思います。 > > なお、蛇足ですが件のphpでは住所の候補(post.txt)を対象のphpと同じフォル > ダにある事を期待しております。 > 意外とファイルの呼び出しは気を遣うので、個人的にはテストする際はフルパス > (サーバの物理的な絶対パスで、URLとしての絶対パスではありません)で指定 > した方が良いかと思います。 > > > >>やはり解決策がわかりません。 >> >>お恥ずかしい話ですが、先ほどの「解決しました」というメールは勘違いでした。 >>(正常に動作する非CodeIgniter環境でテストして、一人で喜んでしましました。 >> どうやら完全に気持ちが追い詰められているようです。) >> >>やろうとしていることは >>コントローラc_Test内のクラスC_Test内メソッドfunction AddNewより呼び出されたビ >>ューv_AddNew(新規登録画面)へ >>Suggest機能付き検索フォームを設置しようとしています。(http://cmf.ohtanz.com/ >>suggest) >> >>さきほどは、ビュー内でさらにsuggest.phpが呼ばれるのがいけないのかと思い、 >>ためしにjsフォルダ内へsuggest.phpを設置し、パスを指定して呼び出せばいいのかと >>思ったのですが >>下記のエラーがでました。 >>「要求された URL は本サーバでは見つかりませんでした。 >> <a href="http://localhost/conference/index.php/c_Test/addNew/(引数1)/ >>(引数2)"> >> 参照元ページ</a>のリンクが間違っているか、古くなってしまっているようです >>」 >> >>CIで上記を設置する方法はないのでしょうか? >>たびたび申し訳ありませんが、よろしくお願いいたします。 >> >>小島 >> >> >>********************************************** >> >>2013年1月12日 15:22 小島健太郎 <kojim****@gmail*****>: >>> ご回答ありがとうございます。 >>> >>> 頂いたメールよりヒントをいただき、v_addNew上のSuggest用テキストボックスを仮 >>> に下記のように書き直してみたところうまく動きました。 >>> (前回はsuggest.phpをapplication/viewsフォルダに配置し、ビュー側からパス指 >>> 定なしで呼び出していましたが、 >>> 仮に(よくない例ですが)jsフォルダへ配置し、<?php echo base_url()."js/ >>> suggest.php" >>> ?>と、パス指定で呼び出すようにしました。) >>> >>> <input type="text" id="POST1" name="POST1" autocomplete="off" >>> size="10" value="" onFocus="suggestOn(0,'POST1','ADDR1','<?php echo >>> base_url().'js/' ?>suggest.php');" onBlur="suggestOff('POST1');"> >>> <input type="text" id="ADDR1" name="ADDR1" autocomplete="off" >>> size="40" value="" onFocus="suggestOn(1,'ADDR1','POST1','<?php echo >>> base_url().'js/' ?>suggest.php');" onBlur="suggestOff('ADDR1');"> >>> >>> 戸田様、大変参考になるアドバイスをありがとうございました。 >>> >>> 小島 >>> >>> ****************************************************************** >>> >>> 2013年1月12日 14:31 戸田 広 <info****@sciss*****>: >>>> こんにちは、戸田です。 >>>> >>>>> ■CodeIgniter環境 >>>>> >>>>> GET http://localhost/....../index.php/c_Test/addNew/suggest.php? >>>>> TYPE=0&KEY=1 >>>> >>>> CodeIgniter では、表面的に実行されているのは index.php だけで、 >>>> URL の "index.php" 以降の文字は、index.php の引数として処理されます。 >>>> >>>> 上記のURLですと、次のように処理されることになると思われますが >>>> これはたぶん、ご意図されている構成や処理と、ちょっと違いますよね? >>>> >>>> ・addNew.php が /application/controllers/c_Test ディレクトリー内にある。 >>>> >>>> ・addNew クラスに suggest.php() という名前の public メソッドがある。 >>>> >>>>> レスポンス >>>>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >>>>> "http://www.w3.org/TR/html4/loose.dtd"> >>>>> <html> >>>>> : >>>>> : >>>>> </html> >>>> >>>> >>>> エラー画面が返ってきているとかではないですよね? >>>> CodeIgniter は、基本的に >>>> コントローラーのメソッド内で明記したビューファイルしか出力しませんので、 >>>> エラーではなく 意図しないHTMLが出力されている場合は、 >>>> CodeIgniterに属した問題によるものではなく、 >>>> 単に意図しないメソッドが実行されているのだと思います。 >>>> >>>> >>>> 以上です。 >>>> >>>> >>>> >>>> On 2013/01/12, at 13:20, 小島健太郎 wrote: >>>> >>>>> お世話になっております。小島と申します。 >>>>> >>>>> CodeIgniterを使用してシステムを作っており、問題にぶち当たりました。アドバ >>>>> イスをいただけるとありがたいです。 >>>>> 環境はWindows+XAMPPです。 >>>>> >>>>> 新規登録画面の一部で、Ajaxを使用したSuggest機能を使おうとしています。 >>>>> >>>>> 下記サイトで紹介されているSuggest実装方法を参考に、自分の環境で使用できる >>>>> ように少し修正を加え、 >>>>> 非CodeIgniter環境(ローカルのhtdocs直下)で正常に動作するところまではうま >>>>> くいきました。 >>>>> 参考サイト:http://cmf.ohtanz.com/suggest >>>>> (ちなみに内容は、郵便番号テキストボックスへ郵便番号を入力すると「郵便番 >>>>> 号&住所」の候補が表示され、 >>>>> 選択したデータが郵便番号テキストボックスと住所テキストボックスへそれぞれ >>>>> セットされるというものです) >>>>> >>>>> 次に、全く同じコードを、CodeIgniterで構築中の画面の一つv_addNew(新規登録 >>>>> 画面)へ書きました。 >>>>> (ここで当然Javascriptの読み込み先パス等には注意を払いました。) >>>>> >>>>> ですが動かしてみると(郵便番号を入力し始めると)、候補表示スペースに、開 >>>>> いている画面v_addNewと全く同じ画面が表示されます。 >>>>> >>>>> FireBugにて入力時のレスポンスを確認すると(使い方をあまりわかっていません >>>>> が)下記のような感じです。 >>>>> >>>>> >>>>> ■非CodeIgniter環境で郵便番号に"1"と入力した場合 >>>>> >>>>> GET http://localhost/AjaxTest/suggest.php?TYPE=0$KEY=1 >>>>> >>>>> レスポンス >>>>> <font color=red>1</font>000001:東京都千代田区千代田 >>>>> <BR><font color=red>1</font>000002:東京都千代田区皇居外苑 >>>>> <BR><font color=red>1</font>000003:東京都千代田区一ツ橋 >>>>> >>>>> >>>>> ■CodeIgniter環境 >>>>> >>>>> GET http://localhost/....../index.php/c_Test/addNew/suggest.php? >>>>> TYPE=0&KEY=1 >>>>> >>>>> レスポンス >>>>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >>>>> "http://www.w3.org/TR/html4/loose.dtd"> >>>>> <html> >>>>> : >>>>> : >>>>> </html> >>>>> >>>>> >>>>> CodeIgniter環境では同画面のHTMLがすべて返されているようです。 >>>>> これを解消するにはどの辺りをあたればいいか予想つきますでしょうか? >>>>> よろしくお願いします。 >>>>> >>>>> 小島 >>>>> >>>>> _______________________________________________ >>>>> Codeigniter-users mailing list >>>>> Codei****@lists***** >>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >>>> >>>> _______________________________________________ >>>> Codeigniter-users mailing list >>>> Codei****@lists***** >>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users >> >>_______________________________________________ >>Codeigniter-users mailing list >>Codei****@lists***** >>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users