• 締切済み

ajaxのレスポンスが取得できない。

環境【cakePHP2.X, PHP5.5】 cakephpでajaxを試みてますがうまくいきません。 あるサンプルを参考にして ボタンのクリックをトリガに ajaxMethod()を走らせて alertで"tanaka"を表示させたいのですが なぜかOeders/index.ctpのhtmlを 取得し、長々と表示されてしまいます。 意図した結果を取得できるよう アドバイスを戴けたら嬉しいです。 よろしくお願いします。 【OrdersController.php】 class OrdersController extends AppController { function index() { //初期表示処理 } /** * Ajax用関数 */ function ajaxTest() { $this->autoRender = FALSE; if($this->request->is('ajax')) { return $this->data['name']."さん、こんにちは"; //echoでもOK } } } 【add.ctp】 function ajaxMethod() { $.ajax({ url: "Orders/ajaxTest", type: "POST", data: { name : "tanaka" }, dataType: "text", success : function(response){ //通信成功時の処理 alert(response); }, error: function(){ //通信失敗時の処理 alert('通信失敗'); } }); }

みんなの回答

  • zatsusan
  • ベストアンサー率65% (15/23)
回答No.1

手元に環境がないので、これという回答はできませんが、少しでも解決する糸口を見つける方法を書きます。(バシッと答えられず、すいません…) まずは問題がサーバサイド(Controller)にあるのか、クライアントサイド(Javascript)にあるのかを切り分けることだと思います。 サーバを動かすとAjaxのリクエストを飛ばした時に、リクエストのログが出ると思いますので、そのリクエストのログのURLが /Orders/ajaxTestになっているか確認してください。 もしなっていなければ、Javascriptのリクエストを生成する段階で違うURLになっているということになり、クライアントサイドに問題があります。 もしなっていれば、/Orders/ajaxTestのURLでajaxTestというメソッドが呼ばれているのか、それともindexというメソッドが呼ばれているのか確認してください。 ajaxTestが呼ばれていなければ、サーバーサイドのルーティング(URLとメソッドの紐付け)の設定がおかしいということになります。

関連するQ&A