我正在使用JSON向我的服务器发送数据,但通常我一次只能发送一个数据,现在我想:
从表中检索所有行(mysql数据库) - > php把它放在一个JSON数组+回调---> javascript通过循环遍历数据来检索它并显示出来。
这是我的javascript(jQuery):
$.getJSON(domain_path + 'generate.php?table=' + tbname + '&callback=?', function(data) {
});
如您所见,这有table =表名。这是为了让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表结构:
表名:用户
姓名,链接,电子邮件
如何从users表中获取所有行,这些行包含其名称,链接和电子邮件,并将其转换为JSON数组。
我将如何使用javascript(jquery)显示它?
它是否在javascript中使用for
函数
答案 0 :(得分:4)
在PHP中打印出JSON数组:
$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
});
});
});
首先每个循环遍历你的行/对象;第二个循环遍历您的属性/列。
答案 1 :(得分:0)
使用命名回调的方法是完全错误的,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);
});
});