我有一个移动应用,第一页显示类别列表,点击一个类别转到第二页,在网址上传递类别ID,并显示该类别下的商家名称列表。
数据在MySQL上,所以我使用的是jSON
一切都运行正常,但它没有显示业务名称列表,它只显示重复14次的第一个业务(每个业务有14个字段),所以不是在一个类别下循环5业务,看起来像是在内部循环该类别的第一个业务的字段并重复商业名称。
这是jquery:
$('#businessListPage').live('pageshow', function(event) {
var id = getUrlVars()["id"];
$.getJSON(serviceURL + 'getbusiness.php?id='+id, displayBusiness);
});
function displayBusiness(data) {
var business = data.item;
console.log(business);
$.each(business, function(index) {
$('#actionList').append('<li><a href="">' +
business.business + '</a></li>');
})
$('#actionList').listview('refresh');
}
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
这是html
<div id="businessListPage" data-role="page" data-add-back-btn="true">
<div data-role="header">
<h1>Business List</h1>
</div>
<div data-role="content">
<ul id="actionList" data-role="listview" data-inset="true"></ul>
我尝试了很多东西,但我不擅长jquery,我会很感激任何帮助。感谢
* *添加此内容:
这是php,如果这有帮助......我有一个规范化的表格,它将业务类别归类,我测试了Select部分并且运行良好。
<?php
include 'config.php';
$sql = "select * " .
"from directory2 WHERE ID IN(SELECT dirID FROM cat2dir WHERE catID =:id)group by business order by business ";
try {
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare($sql);
$stmt->bindParam("id", $_GET[id]);
$stmt->execute();
$businesses = $stmt->fetchObject();
$dbh = null;
echo '{"item":'. json_encode($businesses) .'}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
&GT;
答案 0 :(得分:2)
据我所知,你的代码中你的JSON有一个你想循环的密钥名称。
将每个更改为
$.each(business, function(index) {
$('#actionList').append('<li><a href="">' +
index.business + '</a></li>');
});
您使用过business.business。这可能会导致问题。
答案 1 :(得分:0)
您可能需要更改
business.business
至busines[index].business
$.each(business, function(index) {
$('#actionList').append('<li><a href="">' +
business[index].business + '</a></li>');
});
或使用每个循环中的第二个参数value
$.each(business, function(index, val) {
$('#actionList').append('<li><a href="">' +
val.business + '</a></li>');
});
但是这一切都不知道从你的ajax请求返回的json的结构。您很可能必须使用javascript调试器逐步执行该功能,以确定您尝试访问的确切属性。