【问题标题】:Javascript alert not working on live server in codeigniterJavascript警报在codeigniter中的实时服务器上不起作用
【发布时间】:2013-01-21 07:39:10
【问题描述】:

我正在使用 codeigniter。我在 javascript 代码中有一个错误。我有一个登录表单,如果登录名或用户名错误,我想显示一个 javascript 警告框。我已经在 localhost 上完成了我的项目,并且 javascript 在 localhost 上运行良好。但是当我在实时服务器上上传项目时,它会显示一条错误消息。

遇到了 PHP 错误

严重性:警告消息:无法修改标头信息 - 标头 已经发送(输出开始于 /home/servername/public_html/projectdemo/wms/application/controllers/login.php:36) 文件名:helpers/url_helper.php 行号:540

我把这段 javascript 代码放在控制器中

<script type='text/javascript'>
function jsfunction()
{
    window.alert("Wrong User Name or Password");
}
</script>

在控制器中,我调用了这个函数:

echo "<script type='text/javascript'>jsfunction();</script>";

稍后我将脚本放在 head 部分,但出现相同的错误消息。
你能帮我么。 提前致谢。

【问题讨论】:

  • 我相信你应该把任何JS代码放在视图中,而不是控制器中。

标签: php javascript codeigniter


【解决方案1】:

CodeIgniter 使用视图/模板渲染系统正式回复客户端。在框架过程的那一部分之前回显某些内容会导致服务器提前回复客户端,因此“标头已发送”。此后,CodeIgniter 无法再按预期执行任何操作,因为您强制服务器过早回复。

您应该做的是设置一些标志以及模板/视图数据,以便视图可以有条件地在视图/模板中呈现一段 HTML(这将是您的错误警报代码)

【讨论】:

    【解决方案2】:

    标题必须在任何 HTML、JS、CSS 等之前解析。

    正如https://stackoverflow.com/users/920374/setsuna 提到的,您应该将JavaScript 放入视图文件中。您的 PHP 错误基本上是在发送页面标题之前有输出,这搞砸了。

    【讨论】:

      【解决方案3】:

      在此处查看接受的答案:How to fix "Headers already sent" error in PHP

      剧透:你不能在控制器中开始输出,这就是你有视图的原因。

      【讨论】:

        猜你喜欢
        • 2016-03-20
        • 2021-03-17
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 2015-02-17
        • 2017-06-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多