こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

締切り済みの質問

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('通信失敗');
}
});
}

投稿日時 - 2015-10-18 15:50:12

QNo.9065934

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

ANo.1

手元に環境がないので、これという回答はできませんが、少しでも解決する糸口を見つける方法を書きます。(バシッと答えられず、すいません…)

まずは問題がサーバサイド(Controller)にあるのか、クライアントサイド(Javascript)にあるのかを切り分けることだと思います。

サーバを動かすとAjaxのリクエストを飛ばした時に、リクエストのログが出ると思いますので、そのリクエストのログのURLが /Orders/ajaxTestになっているか確認してください。
もしなっていなければ、Javascriptのリクエストを生成する段階で違うURLになっているということになり、クライアントサイドに問題があります。
もしなっていれば、/Orders/ajaxTestのURLでajaxTestというメソッドが呼ばれているのか、それともindexというメソッドが呼ばれているのか確認してください。
ajaxTestが呼ばれていなければ、サーバーサイドのルーティング(URLとメソッドの紐付け)の設定がおかしいということになります。

投稿日時 - 2015-10-22 18:17:39

-広告-
-広告-
-広告-
-広告-