用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2275|回复: 10
收起左侧

[已解决] 新手求助 控制器中查询数据后输出的问题

[复制链接]
发表于 2016-10-21 14:14:41 | 显示全部楼层 |阅读模式
  1. public function login(){
  2.             $this->load->database();
  3.             $username = $this->input->post('username');
  4.             $password = $this->input->post('password');
  5.             $query = $this->db->query('select * from user where username="'.$username.'" or phone="'.$username.'" or email="'.$username.'"');
  6.             $data = array();
  7.             foreach ($query->result() as $row){
  8.             $data['id']=$row->id;
  9.             $data['pass']=$row->password;
  10.         }
  11.             echo json_encode($data);
  12.     }
复制代码

上面的代码是没问题的 但是如果最下面返回数据的时候这样写前端就会报错
  1. if ($password==$data['pass']) {
  2.                 echo json_encode($data);
  3.         }
复制代码
 楼主| 发表于 2016-10-21 14:15:48 | 显示全部楼层
ps 楼主是前端 php基本不懂 求大神告知
发表于 2016-10-21 14:22:30 | 显示全部楼层
把报错信息发一下看看,还有就是输出一下两个密码的值看一下
发表于 2016-10-21 14:26:42 | 显示全部楼层
本帖最后由 Closer 于 2016-10-21 14:31 编辑

原因出在 $data['pass']
他有可能沒得到資料,而 foreach 沒執行
於是根本不存在 $data['pass'] 這個變數位置
使用前你可以多加個判斷
PHP复制代码
 
if (isset($data['pass']) && $password==$data['pass']) {
 
复制代码


只不過這樣的判斷方式對於邏輯思考比較沒意義
因為 $password & $data['pass'] 都是指向同一個
可以單純 isset($data['id']) 或 count($data) > 0 類似這種判斷

 
 楼主| 发表于 2016-10-21 14:31:36 | 显示全部楼层
莫若离 发表于 2016-10-21 14:22
把报错信息发一下看看,还有就是输出一下两个密码的值看一下

报错信息SyntaxError: Unexpected token < in JSON at position 0(…)
这应该是返回数据的时候返回了html代码?
我直接输出都没有问题 也确实取到了数据库中的密码
 楼主| 发表于 2016-10-21 14:43:59 | 显示全部楼层
Closer 发表于 2016-10-21 14:26
原因出在 $data['pass']
他有可能沒得到資料,而 foreach 沒執行
於是根本不存在 $data['pass'] 這個變數位 ...

我明白了..php里面如果这两个变量有一个没取到值那我这样判断就会出错 他不会返回false这样吗
发表于 2016-10-21 14:52:40 | 显示全部楼层
本帖最后由 Closer 于 2016-10-21 14:54 编辑
IMSupperkaka 发表于 2016-10-21 14:43
我明白了..php里面如果这两个变量有一个没取到值那我这样判断就会出错 他不会返回false这样吗 ...

不會,他會先發現 $data['pass'] 不存在
然後再返回整個錯誤結果的畫面 (Html)

所以可以善用 isset() 去檢查,也不會造成你畫面報錯
 
 楼主| 发表于 2016-10-21 14:55:44 | 显示全部楼层
Closer 发表于 2016-10-21 14:52
不會,他會先發現 $data['pass'] 不存在
然後再返回整個錯誤結果的畫面 (Html)

还有一个问题 我是通过ajax传递的前端数据 然后我在上面判断之后想直接加载别的视图 但ajax又报错了 我需要怎么做啊
发表于 2016-10-21 14:58:39 | 显示全部楼层
本帖最后由 Closer 于 2016-10-21 15:01 编辑
IMSupperkaka 发表于 2016-10-21 14:55
还有一个问题 我是通过ajax传递的前端数据 然后我在上面判断之后想直接加载别的视图 但ajax又报错了 我需 ...

請參閱 : CI 手冊 - 視圖

然後你得用 JQuery 去換
類似這種 $('#change').html(data);

 
 楼主| 发表于 2016-10-21 15:13:09 | 显示全部楼层
Closer 发表于 2016-10-21 14:58
請參閱 : CI 手冊 - 視圖

然後你得用 JQuery 去換

十分感谢

本版积分规则