//this is my mysql result
$search_result=$this->Connect_user_model->get_user($key_word);
$info=array();
foreach($search_result as $row){
$info[]=array('username' => $row->username,
'email' => $row->email,
'gender' => $row->gender);
echo json_encode($info);'
}
如何循环此响应? 我得到的答案就像 -
0: {
username: iamanam,
email: 1,
gender: Male
}
email: "1"
gender: "Male"
username: "iamanam"
1: {
username: admin,
email: iamanam3@gmail.com,
gender: Male
}
email: "iamanam3@gmail.com"
gender: "Male"
username: "admin"
2: {
username: iamanam,
email: 1@1.com,
gender: Male
}
email: "1@1.com"
gender: "Male"
username: "iamanam"
当我在loop.it之外回显json_encode但我得到的每个结果都是双倍的 我将此函数用于循环----
function process_response(data){
var show_user='';
$.each(data,function(contact,contactInfo) {
show_user+='<div class="discounted-item '+contactInfo.gender+' music-playlist">';
show_user+='<img src="" alt="" class="music-playlist-left" width="38px" height="38px" />';
show_user+='<h1>';
show_user+=contactInfo.username;
show_user+='</h1>';
show_user+='<p>';
show_user+= contactInfo.gender;
show_user+='</p>';
show_user+='<a href="" title="" class="tips" rel="">';
show_user+='<img src="" alt="f" class="music-playlist-right" id="img"></a>';
show_user+='</div>';
}); // end of each()
// add finished HTML to page
$('#info').append(show_user);
}//process_responce
答案 0 :(得分:2)
你是否实际上是指每次迭代结果时回显出JSON字符串?如果将echo语句移出for循环,您将获得一个包含所有数据的JSON对象,而不是每次添加数据时都获取JSON对象。
答案 1 :(得分:2)
你做错了是在循环中输出JSON。
这意味着您的输出实际上是几个单独的JSON块:如果您尝试将该输出作为单个JSON块读取,则它将无效。
您需要做的是将它全部构建到一个数组中,并在完成数组循环后输出JSON。
由于您已经正确构建了$info[]
数组,所以修改代码所需要做的就是将echo
移到foreach
循环之外,如下所示:
foreach($search_result as $row){
$info[]=array('username' => $row->username,
'email' => $row->email,
'gender' => $row->gender);
}
echo json_encode($info);
希望有所帮助。
顺便说一句,如果$row
只包含这三个字段,那么值得知道json_encode()
能够像对象一样轻松地编码对象。因此,如果$row
只是那三个字段,那么您可以在循环中简单地执行$info[]=$row;
,并且结尾处的输出将是相同的。