2014-09-23 94 views
0

这是我的代码。我已经尝试过,flush(); window_location ..但仍然失败。我该怎么办?我还测试了$ result的值是否被传递,并没有问题。唯一的问题是JavaScript没有加载。我有这个编码结构的其他代码,但工作正常,并显示加载前的JavaScript。在重定向之前加载JavaScript(CodeIgniter)

function accsettings() 
{ 
    $this->load->model('admin_model'); 
    $result = $this->admin_model->accsettings(); 

    if ($result==0) 
    { 
     echo ' 
      <script type="text/javascript"> 
       alert("Congratulations! Your profile has been updated."); 
      </script> 
      '; 
     $res2 = $this->admin_model->accset_audit(); 

    } 
    else if ($result==1) 
    { 
     echo '<script type="text/javascript"> alert("Error! Current password is not correct."); </script>'; 
    } 
    else 
    { 
     echo '<script type="text/javascript"> alert("New password does not match with the confirmation."); </script>'; 
    } 
    redirect('/main/accsettings'); 
} 
+0

这不会有任何效果。您首先打印一些输出,然后将用户发送到另一页。出现错误时,您不应该重定向用户。 – Jerodev 2014-09-23 09:28:49

+0

@Jerodev,我在我的程序的其他功能上有这个确切的代码,它工作。 – Retroswald13 2014-09-23 09:31:32

回答

0

,如果你想显示验证消息,那么请设定变量控制器和检查看法我不会推荐这种方式来显示“JavaScript的”警报消息。

在您的代码中,您正在使用header位置方法重定向未在浏览器上显示结果的页面。

当你想这个要执行请使用refresh方法来显示缓冲区结果在浏览器

redirect('/main/accsettings', 'refresh'); 
//similar to 
header("refresh:0;url=/main/accsettings"); 
+0

使用标题会导致代码错误,如404错误等。 – Retroswald13 2014-09-23 09:33:07

+0

是你**重定向**相同的控制器操作? – Girish 2014-09-23 09:35:39

+0

“找不到 在此服务器上找不到请求的URL /主/ accsettings。” 编辑:main/accsettings是main.php中的一个视图,它是一个控制器。 – Retroswald13 2014-09-23 09:37:41

0

你应该做的重定向还的JavaScript内。

这里是你如何能做到这一点:

<script type="text/javascript"> 
    alert("Error! Current password is not correct."); 
    setTimeout(function() { 
     window.location.href = "http://www.google.nl"; //will redirect to google. 
    }, 2000); //will call the function after 2 secs. 
</script> 
+0

href将无法使用。 main不是一个文件夹,accsettings是main.php文件中的一个函数。我正在使用CodeIgniter框架。 – Retroswald13 2014-09-23 09:44:29

+0

您是否重定向到完全相同的控制器和功能? – 2014-09-23 11:31:50

+0

没关系。我已经在7个小时前解决了它。 – Retroswald13 2014-09-24 06:59:42