2013-07-25 2 views
0

У меня есть мобильное приложение, первая страница показывает список категорий, при нажатии на одну категорию перейдите на вторую страницу, передав идентификатор категории на URL-адрес и показывая список имен компаний в разделе эта категория.
Данные на MySQL, поэтому я использую jSON
Все работает нормально, но вместо отображения списка бизнес-имен он показывает только первый бизнес, который повторяется 14 раз (каждый бизнес имеет 14 полей), поэтому вместо петля на 5 бизнес под одной категорией, выглядит как петля внутри полей первого бизнеса категории и повторения названия компании.
JQuery мобильный каждый цикл над JSON не работает

Вот 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, если это помогает ... У меня есть нормализованная таблица, Линк категории с бизнесом, я тестировал Выбрать часть и работаю хорошо.

<?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() .'}}'; 
} 

?>

+0

Как выглядит ваш сервер на вашем компьютере? – bluetoft

+0

Нравится это http://canadianholisticdirectory.ca/mobile/show.jpg – user2585262

ответ

2

Насколько я могу сделать вывод из вашего кода вашего JSON имеет ключевое имя, которое вы хотите петлю.

Изменение друг к

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

Вы использовали business.business. Это может вызвать проблемы.

+0

Я так как бизнес - это имя столбца для имени компании, когда я меняю его на индекс, он показывает 14 элементов с неопределенным – user2585262

+0

попробуйте добавить console.log (индекс); в каждом цикле и сообщить, что он отправит обратно. – vipulsharma

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>'); 
    }); 

Но все это, не зная структуры ваш json вернулся из вашего запроса ajax. Вам, скорее всего, придется пройти через функцию с помощью отладчика javascript, чтобы определить точные свойства, к которым вы пытаетесь получить доступ.

+0

Я включил php-файл сверху, если это поможет! спасибо – user2585262

+0

Bluetoft, я попробовал оба, но показывает то же самое с undefined ... – user2585262

+0

Вам действительно нужно использовать что-то вроде вкладки netbug net, чтобы проверить, что вы на самом деле получаете в своем ajax-запросе.Вы также можете использовать этот инструмент для перехода через свой javascript, чтобы узнать, к каким свойствам у вас есть доступ. – bluetoft

Смежные вопросы