【问题标题】:Why can't Code Igniter detect that my form is being submitted via POST?为什么 Code Igniter 无法检测到我的表单是通过 POST 提交的?
【发布时间】:2012-04-04 05:28:46
【问题描述】:

我的 jQuery Mobile 应用程序的 Code Igniter 视图中有一个表单。

<form action="<?= BASE_PAGE_URL ?>settings" method="post" id="settingsForm">
    <div data-role="fieldcontain">
        <label for="firstName">First Name</label>
        <input type="text" name="firstName" id="firstName" value="" placeholder="First Name" />
    </div>
    <div data-role="fieldcontain">
        <label for="lastName">Last Name</label>
        <input type="text" name="lastName" id="lastName" value="" placeholder="Last Name" />
    </div>
    <input type="hidden" name="purpose" value="register" />
    <input type="submit" name="submit" value="Register" />
</form>

但是,当我将此代码写入控制器方法时,操作指定的 URL 会导致:

echo ($_SERVER['REQUEST_METHOD'] == 'POST') ? "yay" : "nay";

当我点击提交按钮时,“nay”被写入页面。为什么 Code Igniter 无法判断我正在提交 post 请求?

【问题讨论】:

  • 你试过echo $_SERVER['REQUEST_METHOD'] 看看它说了什么吗?可能只是一个案例问题(即 POST 与 post)。
  • 谢谢,$_SERVER['REQUEST_METHOD'] 在我点击提交后奇怪地返回“GET”。我想知道为什么。
  • 尝试查看调试器以查看请求是作为 get 还是 post 发送的。
  • 谢谢,调试器是什么?

标签: php codeigniter


【解决方案1】:

如果您想确定您是否有 POST 数据或请求是否为 POST,请使用 input class 中的 post() 方法

$this->input->post(index);

//returns FALSE if no POST data
//returns the POST array if there is data (hence, a POST)
//returns a specific data from the array if you provide "index"

【讨论】:

    【解决方案2】:

    这可能是register_globals 的原因。使用

    if($_POST) 
    

    OR CI 输入类

    $this->input->post('var');
    

    【讨论】:

      【解决方案3】:

      我想知道您的表单是否按照您的预期返回了一个发布请求,但是之后会立即重定向某些内容,您将其视为 GET?尝试将一个临时的exit() 立即放入表单处理操作中;我怀疑这会以 POST 的形式出现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-17
        • 1970-01-01
        • 1970-01-01
        • 2020-09-29
        • 2016-05-23
        • 2011-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多