2016-04-26 33 views
1

我正在Cakephp3中處理Ajax請求,並且需要在成功時向用戶顯示一條Flash成功消息。從模板調用CakePHP3 Flash消息

下面是我在做什麼:

$('#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; 

回答

0

閃光燈消息是不是JSON響應。

你應該做下面的事情。

在你的控制器:

$result = $query->execute(); 
if ($this->request->is('ajax')) { 
    $this->set(compact('result')); 
    $this->set('_serialize', 'result'); 
    return; 
} 

調用來設置在_serialize板條箱,而無需創建該控制器方法的相應的JSON模板的JSON響應。

在您的JS文件

success : function(data, textStatus, jqXHR){ 
    //the result is available as jqXHR.responseJSON 
} 
+0

我做的是送我的控制器ID的數組,它更新的數據,並返回true或false。我沒有得到如何向用戶顯示關於成功或失敗的消息? –

+0

我的回答中有什麼不明確的地方?如果$ result是一個布爾值,你可以創建一個基於javascript的消息,在我的例子中的同一行。使用Firebug,在那裏添加一個斷點並檢查你的jqXHR對象。 – rrd

+0

你的意思是我必須使用一些外部JS Lib來顯示Flash消息?我的問題是可以在那裏顯示CakePHP3的Flash幫手嗎? –