我在cakephp3的Ajax请求上工作,需要显示一个成功的闪光成功的消息给用户。
下面是我正在做的事情:
$('#validate-btn').on('click', function () {
$('#validate-btn').text("Validating...");
$('#results-form').submit();
if (ids.length !== 0) {
$.ajax({
type: "POST",
url: "<?php echo Cake\Routing\Router::url(array("controller" => "results", "action" => "validateSelected"));?>" + "/" + JSON.stringify(ids),
cache: false,
success: function (data) {
$('#validate-btn').text("Validate Selected");
<?php $this->Flash->success("Validated"); ?>
},
error: function (data) {
alert('s');
}
});
}
});除了闪光消息,其他的一切都很好。如何在视图中显示cakephp3的flash消息?
下面是我如何通过ajax从控制器获取请求:
echo $query->execute()? true : false;发布于 2016-04-28 02:34:50
Flash消息不适用于json响应。
你应该做下面的事。
在您的控制器中:
$result = $query->execute();
if ($this->request->is('ajax')) {
$this->set(compact('result'));
$this->set('_serialize', 'result');
return;
}在_serialize调用set将创建json响应,而无需为此控制器方法创建相应的json模板。
在js文件中
success : function(data, textStatus, jqXHR){
//the result is available as jqXHR.responseJSON
}发布于 2018-10-03 19:06:12
您可以执行以下操作:
控制器::中的
if ($this->XYZ->save($eventEntity)) {
$this->Flash->success(['message' => __('Updated the Event'), 'title' => __('Success')]);
} else {
$this->Flash->error(__('An Error occurred while updating the event. Please try again'));
}Ajax::中的
$.ajax({
type: "POST",
async: true,
url: $("#xyz").attr("data-confirm"),
dataType: "json",
success: function (response) {
toastr.success(response.message, response.title);
},
error: function (data) {
toastr.error(data.message, data.title);
}
});我使用的是烤面包机插件,但你可以使用任何你选择的flash。该邮件将在您的response.message中提供
发布于 2019-03-26 19:09:42
在控制器和布局/ajax.ctp中设置布局"ajax“的另一种方法是:添加echo $this->Flash->render();
https://stackoverflow.com/questions/36869265
复制相似问题