2012-10-02 44 views
1

我正在嘗試修改Ion auth以使用ajax,因爲我的登錄表單是固定大小,我想在提交表單時提供錯誤的數據時提醒錯誤消息。如何在alertbox中顯示codeigniter表單驗證消息

的消息從控制器這樣的返回:

$this->session->set_flashdata('message', $this->ion_auth->messages()); 

,並在這樣的觀點拾起:

<div id="infoMessage"><?php echo $message;?></div> 

我想如下顯示它們:

<?php if((isset($message))&&($message!='')){ 
      echo '<script> alert("'.$message.'"); </script>'; 
     } 
?> 

這不工作,警報沒有顯示,我已經刪除了消息分隔符,但是這並沒有沒有幫助。我唯一的想法就是它必須是與方式笨正在打造我的javascript中間的新行,因爲它是走出這樣的:

<script> 
alert('The Identity field is required. 
The Password field is required.'); 
</script> 

我怎樣才能擺脫這種換行,並更換它在某種程度上不會打破我的js?

+0

你正在使用jQuery或香草JavaScript? – doktorgradus

+0

都在我的處置,所以jQuery解決方案將工作 – WebweaverD

回答

1

嘗試

<?php 
    if((isset($message))&&($message!='')){ 
     echo '<script> alert("'.str_replace(array("\r","\n"), '', $message).'"); </script>'; 
    } 
?> 
+0

謝謝 - 警報正在工作,但它現在不創建消息之間的新線,任何想法? – WebweaverD

+0

您可以嘗試將'str_replace'替換部分替換爲'\ n',如下所示:'echo'';',注意,替換部分應該有單引號,因爲我們希望'\ n'被JS解析爲新行,但是作爲PHP的文本! –

0

config/routes.php添加字符串:

$route["action"] = "mycontroller/validation"; 

其中mycontroller是你的控制器,在那裏你處理AJAX查詢的類名,並validation是該控制器的方法的名稱。

當通過jQuery的方法傳遞數據.ajax()或它別名.post(),可以當它在documentation描述使用服務器響應的結果:

$.post("validation", 
{ 
    username: $('#username').val(), 
    password: $('#password').val() 
}, 
function(data) 
{ 
    alert('message: ' + data); 
}); 

$.ajax({ 
    url: "validation", 
    username: $('#username').val(), 
    password: $('#password').val() 
}).done(function(data) 
{ 
    alert('message: ' + data); 
}); 

$.ajax({ 
    url: 'validation', 
    data: { username: $('#username').val(), password: $('#password').val() } 
    success: function(data) 
    { 
     alert('message: ' + data); 
    } 
}); 
相關問題