IMSupperkaka 发表于 2016-10-21 14:14:41

新手求助 控制器中查询数据后输出的问题

public function login(){
            $this->load->database();
            $username = $this->input->post('username');
            $password = $this->input->post('password');
            $query = $this->db->query('select * from user where username="'.$username.'" or phone="'.$username.'" or email="'.$username.'"');
            $data = array();
            foreach ($query->result() as $row){
            $data['id']=$row->id;
            $data['pass']=$row->password;
      }
            echo json_encode($data);
    }
上面的代码是没问题的 但是如果最下面返回数据的时候这样写前端就会报错
if ($password==$data['pass']) {
              echo json_encode($data);
      }

IMSupperkaka 发表于 2016-10-21 14:15:48

ps 楼主是前端 php基本不懂 求大神告知

莫若离 发表于 2016-10-21 14:22:30

把报错信息发一下看看,还有就是输出一下两个密码的值看一下

Closer 发表于 2016-10-21 14:26:42

本帖最后由 Closer 于 2016-10-21 14:31 编辑

原因出在 $data['pass']
他有可能沒得到資料,而 foreach 沒執行
於是根本不存在 $data['pass'] 這個變數位置
使用前你可以多加個判斷

if (isset($data['pass']) && $password==$data['pass']) {

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

 

IMSupperkaka 发表于 2016-10-21 14:31:36

莫若离 发表于 2016-10-21 14:22
把报错信息发一下看看,还有就是输出一下两个密码的值看一下

报错信息SyntaxError: Unexpected token < in JSON at position 0(…)
这应该是返回数据的时候返回了html代码?
我直接输出都没有问题 也确实取到了数据库中的密码

IMSupperkaka 发表于 2016-10-21 14:43:59

Closer 发表于 2016-10-21 14:26
原因出在 $data['pass']
他有可能沒得到資料,而 foreach 沒執行
於是根本不存在 $data['pass'] 這個變數位 ...

我明白了..php里面如果这两个变量有一个没取到值那我这样判断就会出错 他不会返回false这样吗

Closer 发表于 2016-10-21 14:52:40

本帖最后由 Closer 于 2016-10-21 14:54 编辑

IMSupperkaka 发表于 2016-10-21 14:43
我明白了..php里面如果这两个变量有一个没取到值那我这样判断就会出错 他不会返回false这样吗 ...
不會,他會先發現 $data['pass'] 不存在
然後再返回整個錯誤結果的畫面 (Html)

所以可以善用 isset() 去檢查,也不會造成你畫面報錯
 

IMSupperkaka 发表于 2016-10-21 14:55:44

Closer 发表于 2016-10-21 14:52
不會,他會先發現 $data['pass'] 不存在
然後再返回整個錯誤結果的畫面 (Html)



还有一个问题 我是通过ajax传递的前端数据 然后我在上面判断之后想直接加载别的视图 但ajax又报错了 我需要怎么做啊

Closer 发表于 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);

 

IMSupperkaka 发表于 2016-10-21 15:13:09

Closer 发表于 2016-10-21 14:58
請參閱 : CI 手冊 - 視圖

然後你得用 JQuery 去換


十分感谢
页: [1] 2
查看完整版本: 新手求助 控制器中查询数据后输出的问题