php генерирует массив json, а затем отображает его на javascript
я работаю с JSON для отправки данных на мой сервер и с него, но обычно я работаю с отправкой по одному данным за раз, теперь я хочу:
извлеките все строки из таблицы (базы данных mysql) - >php поместил их в массив JSON + обратный вызов ---> javascript повторно извлекает их и отображает, просматривая данные.
Вот мой javascript(jQuery):
$.getJSON(domain_path + 'generate.php?table=' + tbname + '&callback=?', function(data) {
});
Как вы можете видеть, у этого есть таблица= имя таблицы. который предназначен для php, чтобы знать, из какой таблицы извлекать данные от.
Но для части php я не уверен, что использовать для создания массива JSONP.
<?php
//connects to database
include 'connect.php';
$tbname = mysql_real_escape_string($_GET['table']);
$callback = $_GET['callback'];
//some mysql commands
//after mysql commands
//i would use this to output data but this is only for one line of data.
$output = array('error'=>'0');
$out_string = json_encode($output);
echo $callback.'('.$out_string.');';
?>
Структура таблицы Mysql:
Имя таблицы: пользователи
имя, ссылка, электронная почта
Как я могу получить все строки из таблицы пользователей, которые содержат их имя, ссылку и адрес электронной почты, и вывести их в массив JSON.
И как бы я отобразил его с помощью javascript(jquery)?
Используется ли функция for
в javascript
2 answers
Распечатайте массив JSON на PHP:
$query = mysql_query("SELECT * FROM ".$tbname."");
$rows = array();
while($r = mysql_fetch_assoc($query)) {
$rows[] = $r;
}
print json_encode($rows);
Перехват и зацикливание результата в jQuery:
$.getJSON(domain_path + 'generate.php?table=' + tbname + '&callback=?', function(data) {
$.each(data, function() {
$.each(this, function(k, v) {
/// do stuff
});
});
});
Сначала каждый цикл проходит по вашим строкам/объектам; второй цикл проходит по вашим атрибутам/столбцам.
Вы подходите с использованием именованного обратного вызова, все неправильно, функция обратного вызова уже предоставлена jQuery - обратите внимание, что вы передали пустую функцию в качестве последнего аргумента getJSON()
? Что ж, это твой обратный звонок.
Вы хотите сделать что-то вроде этого:
PHP:
<?php
//connects to database
include 'connect.php';
// mysql_real_escape_string() doesn't help, we need to do something like this:
if (strpos($_GET['table'], '`') !== FALSE) {
header('HTTP/1.1 400 Bad Request');
exit;
}
// Build/make the query
$query = "SELECT * FROM `{$_GET['table']}`";
if (!$result = mysql_query($query)) {
header('HTTP/1.1 500 Internal Server Error');
exit;
}
// Fetch the returned data into an array of objects:
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = (object) $row;
}
// Send the final data back as JSON
exit(json_encode($output));
Javascript:
$.getJSON(domain_path + 'generate.php?table=' + tbname, function(data, status, xhr) {
// First check the response is a success:
if (xhr.status != 200) {
console.log('Server responded with error code '+xhr.status);
return;
}
// Now iterate over the data:
$.each(data, function(key, item) {
// Do something with the data here, for example:
console.log('Name: '+item.name+', Link: '+item.link+', Email: '+item.email);
});
});