CakePHPの:Ajaxリクエストのためのコントローラ応答が間違っています
-
26-09-2019 - |
質問
私はいくつかのコントローラのアクションへのAJAXリクエストを作るためにjQueryを使用しています。この要求は、同じコントローラで編集アクションのビュー内のボタンから起動される。
私の問題: Ajaxリクエストではなく数の期待値(すべてのフォームと入力して)編集ビューのすべてのコードを返しています。私は、追加アクションのビューで同じAjaxのボタンを配置した場合、それは(それが数を返す)完璧に動作します。
編集と(ベーク付き)デフォルトで生成されるアクションの遺骨を追加します。
これは、AJAXリクエストを作るためにjQueryの関数である。
$.ajax({
type: 'POST',
url: 'checkTargets',
data: {target: tgt_array, channel: channel_type},
success:function(data){
$('#num_subscribers > span').html(data);
},
error:function(){
$('#num_subscribers > span').html("The subscribers could not be loaded");
},
timeout: 5000
});
}
これはアクションです。
function checkTargets() {
if ($this->RequestHandler->isAjax()) {
if(!empty($this->params['form'])) {
$data = $this->params['form'];
if ($data['channel'] === 'SMS') {
$channel = 'sms';
} else {
$channel = 'pin';
}
$targets = $this->processPostTargets($data['target']);
$this->RequestHandler->respondAs('text');
//This echo a NUMBER
echo ClassRegistry::init('Selection')->countSubscribersInTarget($channel, $targets);
Configure:: write('debug', 0);
$this->autoRender = false;
exit();
}
}
}
ですが、なぜでしょう?
おかげ
解決 2
私は問題を修正しました。これは、アヤックスの関数内のURLのparamた(noobのミス)
これはコントローラ内の参照アクションの完全なパスでなければならない。
この質問は、問題を理解するために私を助けました: にAJAXの呼び出し中にアクションURLを使用するには、のベストプラクティスCakePHPのの
固定Ajaxリクエストます:
$.ajax({
type: 'POST',
url: '/myapp/campaigns/checkTargets',
data: {target: tgt_array, channel: channel_type},
success:function(data){
$('#num_subscribers > span').html(data);
},
error:function(){
$('#num_subscribers > span').html("The subscribers could not be loaded");
},
timeout: 5000
});
おかげで、私の英語
を言い訳他のヒント
ただ、すべてにアクセスすることなく提案は、あなたはこれを試してみました?
$this->autoRender = false;
$this->layout = 'ajax';
また、私はそれをシンプルに保つことをお勧めしたい。
$.post("/controller/checkTargets", function(data) {
alert(data);
}
function checkTargets() {
$this->autoRender = false;
$this->layout = 'ajax';
echo "Im working";
}
とそこから行くます。
所属していません StackOverflow