0

我有一个移动应用程序,第一页显示类别列表,当单击一个类别时转到第二页,传递 url 上的类别 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() .'}}'; 
}

?>

4

2 回答 2

2

据我可以从您的代码中推断出,您的 JSON 有一个您想要循环的键名。

将每个更改为

$.each(business, function(index)  {
        $('#actionList').append('<li><a href="">' +
             index.business + '</a></li>');
});

您已经使用了 business.business 。这可能会导致问题。

于 2013-07-25T16:45:48.570 回答
0

你可能需要改变

business.businessbusines[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 调试器逐步执行该函数,以确定您尝试访问的确切属性。

于 2013-07-25T17:30:13.023 回答