我在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}
答案 0 :(得分:0)
代码完全按照您的要求执行。
破坏代码就像...
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,您需要像在GET一样在“正文”而不是“标头”下设置键/值,如果您这样做的话也失踪了。