新手求助 控制器中查询数据后输出的问题
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);
} ps 楼主是前端 php基本不懂 求大神告知 把报错信息发一下看看,还有就是输出一下两个密码的值看一下 本帖最后由 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 類似這種判斷
莫若离 发表于 2016-10-21 14:22
把报错信息发一下看看,还有就是输出一下两个密码的值看一下
报错信息SyntaxError: Unexpected token < in JSON at position 0(…)
这应该是返回数据的时候返回了html代码?
我直接输出都没有问题 也确实取到了数据库中的密码 Closer 发表于 2016-10-21 14:26
原因出在 $data['pass']
他有可能沒得到資料,而 foreach 沒執行
於是根本不存在 $data['pass'] 這個變數位 ...
我明白了..php里面如果这两个变量有一个没取到值那我这样判断就会出错 他不会返回false这样吗 本帖最后由 Closer 于 2016-10-21 14:54 编辑
IMSupperkaka 发表于 2016-10-21 14:43
我明白了..php里面如果这两个变量有一个没取到值那我这样判断就会出错 他不会返回false这样吗 ...
不會,他會先發現 $data['pass'] 不存在
然後再返回整個錯誤結果的畫面 (Html)
所以可以善用 isset() 去檢查,也不會造成你畫面報錯
Closer 发表于 2016-10-21 14:52
不會,他會先發現 $data['pass'] 不存在
然後再返回整個錯誤結果的畫面 (Html)
还有一个问题 我是通过ajax传递的前端数据 然后我在上面判断之后想直接加载别的视图 但ajax又报错了 我需要怎么做啊 本帖最后由 Closer 于 2016-10-21 15:01 编辑
IMSupperkaka 发表于 2016-10-21 14:55
还有一个问题 我是通过ajax传递的前端数据 然后我在上面判断之后想直接加载别的视图 但ajax又报错了 我需 ...
請參閱 : CI 手冊 - 視圖
然後你得用 JQuery 去換
類似這種 $('#change').html(data);
Closer 发表于 2016-10-21 14:58
請參閱 : CI 手冊 - 視圖
然後你得用 JQuery 去換
十分感谢
页:
[1]
2