使用Ajax在按钮上调用Yii2功能点击
问题描述:
在尝试了一些可能的解决方案后,我通过互联网/其他问题在这里找到了解决方法,但似乎无法找到与我的代码相关的问题。我需要的是,在我的视图中点击按钮后,我的Yii2控制器中的一个动作通过Ajax调用并执行一些操作。然而,用我目前的代码,点击按钮后似乎没有任何事情发生。使用Ajax在按钮上调用Yii2功能点击
相关的代码如下...
的观点:
(...)
Html::button('Eliminar', ['data-confirm' => '¿Eliminar enunciado?', 'onclick' => '
$.ajax({
type: "POST",
url: "/evaluacion/eliminar-enunciado",
data: {
id: '.$enunciado->id.'
}, success: function(result) {
if(result == 1) {
$.pjax.reload({container: "#construccion-evaluacion"});
} else {
}
}, error: function(result) {
console.log(\"server error\");
}
});
'])
(...)
控制器:
(...)
public function actionEliminarEnunciado($id)
{
Enunciado::findOne($id)->delete();
if(Enunciado::findOne($id) != null) {
echo 1;
} else {
echo 0;
}
}
(...)
澄清一些注意事项:
- 控制器文件名为EvaluacionController.php。
- $ enunciado-> id变量被正确定义并且具有有效值。
任何意见将不胜感激。谢谢你的时间!
答
您需要获取POST请求的值;
if(isset($_POST['id']))
$id = $_POST['id'];
+1
这和Yupik的评论帮助我解决了它。我想指出,我实际上在控制器中还有一个错字:操作应该返回1或0,而不是回显它们。谢谢! –
如果您正在使用Chrome浏览器 - 请按F12,指向网络标签并查看您的ajax调用的结果。显然它的'400 - 错误的请求',因为在行动中你定义了参数'$ id',但是你通过'POST'方法发送它。因此,改变ajax的URL并添加'id',或者从函数声明中移除'$ id',并通过'POST'获取'$ id'。 – Yupik