2012-10-02 43 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); 
    } 
}); 
相关问题