Я создал функцию jQuery, которая вызывает файл на стороне сервера PHP, который извлекает данные из базы данных MySQL и выводит их в формате JSON. Данные JSON являются шаблонами этой функции, которые динамически вставляются в DIV в качестве элементов списка в моем документе HTML.
Данные JSON хороши – я проверил его с помощью инструмента, и если я запустил PHP-скрипт в браузере, он отобразится правильно (с использованием JSONView в Chrome). Однако я не могу получить данные для отображения в документе HTML.
Первоначально я отправлял данные в формате HTML в файл PHP, и это работало корректно, но у меня были другие проблемы ( см. Этот вопрос SO ), поэтому я решил пойти по этому пути другим способом – вместо этого использовал JSON и создавал его.
Я пытаюсь добавить из строк базы данных: label, title, discription и gotoURL в HTML-теги перспективы:
<div id="navContent"> <li id="navItem"> <a href=""> <h1>Label</h1> <h2>Title</h2> <p>Dispription</p> </a> </li> </div>
Я не знаю, что у меня неправильно в моем кодировании; не могли бы вы просмотреть фрагменты и отредактировать их в своем ответе. Thnx
Подается PHP:
<?php //MySQL Database Connect include 'mylogin.php'; mysql_select_db("myDB"); $sql=mysql_query("select * from my_list"); $output = new stdClass(); while($row = mysql_fetch_assoc($sql)) { $output->Some_Guidance_Library[] = $row; } header('Cache-Control: no-cache, must-revalidate'); header('Content-type: application/json'); echo (json_encode($output)); mysql_close(); ?>
HTML Doc:
<html> . . . <head> . . . <script type="text/javascript"> . . . var ajaxLoader = ''; var dns = 'http://192.168.1.34'; var navContent = '/andaero/php/my_list.php'; var bodyContent = '/wiki/index.php/Document #content'; <!-- ================ When Ready Do This ============================ --> <!-- **************************************************************** --> $(document).ready(function(){ loadNav(dns + navContent, "navContent");//<- This gets loaded into the navContent<div loadPage(dns + bodyContent, "bodyContent"); }); . . . </script> </head> <body> . . . <div id="navScrollContainer" class="navContentPosition"> <div id="navContent"> <li id="navItem"> <a href=""> <h1>Label</h1> <h2>Title</h2> <p>Dispription</p> </a> </li> </div> </div> . . . </body> <!-- ================ Functions ===================================== --> <!-- **************************************************************** --> . . . <script type="text/javascript"> /* --------------- Handle Pg Loading ----------------- */ function loadPage(url, pageName) { $("#" + pageName).load(url, function(response){ $('#navHeaderTitle').text($(response).attr('title')); // transition("#" + pageName, "fade", false); }); }; function loadNav(url, divId) {//<-- THIS FUNCTION'S BROKE!! $.getJSON(url, function(data){ $.each(data, function(){ var newItem = $('#' + divId).clone(); // Now fill in the fields with the data newItem.find("h1").text(this.label); newItem.find("h2").text(this.title); newItem.find("p").text(this.description); newItem.find("a").text(this.gotoURL); // And add the new list item to the page newItem.children().appendTo("#navScrollContainer") }); //transition(pageName, "show"); }); }; </script> </html>
Возвращенные данные JSON:
{"Regulatory_Guidance_Library":[{"_id":"1","label":"AC","title":"Advisory Circulators","description":"Provides guidance such as methods, procedures, and practices for complying with regulations and requirements.","date":"2008-03-03","gotoURL":null},{"_id":"2","label":"AD","title":"Airworthiness Directives","description":"Legally enforceable rules that apply to aircraft, aircraft engines, propellers, and appliances.","date":"2012-06-08","gotoURL":"\/wiki\/index.php\/Airworthiness_Directive"},{"_id":"3","label":"CFR","title":"Code of Federal Regulations","description":"Official Rulemaking documents of the CFR in Title 14 and have been published in the Federal Register","date":"2012-01-31","gotoURL":null},{"_id":"4","label":"PMA","title":"Parts Manufacturer Approvals","description":"Parts Manufacturer Approvals","date":"2012-01-31","gotoURL":null},{"_id":"5","label":"SAIB","title":"Special Airworthiness Info Bulletins","description":"Bulletins issued by manufacturers to provide modification or inspection instructions.","date":"2012-01-31","gotoURL":null},{"_id":"6","label":"SFAR","title":"Special Federal Aviation Regulation","description":"Official Rulemaking documents that have changed the language of the CFR in Title 14 CFR for aviation.","date":"2012-01-31","gotoURL":null},{"_id":"7","label":"STC","title":"Supplemental Type Certificates","description":"Document issued by the Federal Aviation Administration approving a product (aircraft, engine, or propeller) modification","date":"2012-01-31","gotoURL":null},{"_id":"8","label":"TSO","title":"Technical Standard Orders","description":"Minimum performance standards issued by the FAA for specified materials, parts, processes, and appliances used on civil aircraft.","date":"2012-01-31","gotoURL":null},{"_id":"9","label":"TCDS","title":"Type Certificate Data Sheets","description":"Repository of Make and Model information of aircraft, engine or propeller including airspeed, weight, and thrust limitations, etc.","date":"2012-01-31","gotoURL":null}]}
Вы никогда не ссылаетесь на массив Some_Guidance_Library
в своем анализе успеха ajax. Скорее всего, просто избавиться от него.
Попробуйте изменить
$output = new stdClass(); while($row = mysql_fetch_assoc($sql)) { $output->Some_Guidance_Library[] = $row; }
TO:
$output = array(); while($row = mysql_fetch_assoc($sql)) { $output[] = $row; }
Было бы намного легче помочь, если бы вы предоставили образец json, который был возвращен браузеру. Можно скопировать его прямо из консоли браузера
РЕДАКТИРОВАТЬ
Основываясь на json, вам нужно будет изменить ваш цикл $.each
:
$.each(data.Regulatory_Guidance_Library, function(){.......