Jquery移动JSON上的每个循环都不起作用

时间:2013-07-25 16:36:35

标签: jquery json jquery-mobile

我有一个移动应用,第一页显示类别列表,点击一个类别转到第二页,在网址上传递类别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;

2 个答案:

答案 0 :(得分:2)

据我所知,你的代码中你的JSON有一个你想循环的密钥名称。

将每个更改为

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

您使用过business.business。这可能会导致问题。

答案 1 :(得分: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调试器逐步执行该功能,以确定您尝试访问的确切属性。