>我在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 那样在标题下设置键/值,如果这也是您缺少的东西。