POST在CodeIgniter中不起作用,而GET工作正常



>我在CodeIgniter中的POST中遇到此问题,它不起作用,而如果我切换到GET,则工作正常。

登录控制器

public function login_check(){
    print_r($this->input->post());
    if($this->input->post('email')!=NULL){
        echo '1';
    }
    else{
        header('Content-Type: application/json');
        echo json_encode( array('a' => $this->input->post('email')));
}

CSRF 在配置文件中设置为 false,而基本 url 设置为 http://localhost/xyz/

.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

路线

$route['api/login-check'] = 'login/login_check';

如果我在邮递员中设置方法 GET 时设置$this->input->get('email'),那绝对没问题。

我错过了什么?任何这方面的帮助将不胜感激。

编辑:

邮递员的回应:

Array() {"a":null}

代码完全按照您的要求执行。

代码的分解就像...

If I get something from $this->input->post('email') then 
     echo '1';
else if $this->input->post('email') is NULL
     then assign NULL to a and return it in a json_encoded array.

按照你的代码,它可能意味着类似...

public function login_check(){
    print_r($this->input->post());
    if($this->input->post('email') == NULL){ // This was != 
        echo '1';
    }
    else{
        header('Content-Type: application/json');
        echo json_encode( array('a' => $this->input->post('email')));
}

唯一的更改是在 if 语句中将 != 更改为 ==。

其中一个"盯着它太久,永远看不到它"简单的逻辑错误:)

更好的建议是使用类似...

public function login_check(){
    print_r($this->input->post());
    if($this->input->post('email')){
        header('Content-Type: application/json');
        echo json_encode( array('a' => $this->input->post('email')));
        exit();
    }
    else {
        // Handle the case where no email was entered.
        echo '1';
    }
}

这应该会让你回到正轨。

更新:我已经在邮递员中尝试过这个(刚刚安装了它(,对于 POST,您需要在 Body 下设置键/值,而不是像使用 GET 那样在标题下设置键/值,如果这也是您缺少的东西。

相关内容

  • 没有找到相关文章

最新更新