2014-03-28 115 views
2

所以我有一个数据库,通过一大堆使用PHP回到通过JSON jQuery的数据..我试图从返回的数据,但没有运气访问各列..jQuery的阅读JSON数据

我的PHP :

header('Content-Type: application/json'); 
require 'database.php'; 
mysql_query('SET CHARACTER SET utf8'); 
$myjsons = array(); 
$qry = 'SELECT * FROM quotes ORDER BY id'; 
$result = mysql_query($qry); 

while($row = mysql_fetch_assoc($result)){ 
    $myjsons[] = json_encode(array($row)); 
} 
echo $_GET['callback'] . '(' . json_encode($myjsons) . ')'; 

这里是我的JS:

function getAll(){ 
    jQuery.ajax({ 
     url:'example.com/js/getAll.php', 
     async: true, 
     dataType: 'jsonp', 
     success:function(data){ 
      $('.quoteList').append(data[0]); 
     } 
    }); 
} 

目前该追加以下的元素:

[{"id":"1","text":"The most wasted of all days is one without laughter.","author":"E.E. Cummings","status":"1"}] 

因此,举例来说,如果我想让jQuery通过数据[0]到数据[92](最后一个)并将每个作者追加到.quoteList,我怎么能这样做呢?我试过数据[0] [1]和数据[0] [作者]

回答

6

您可以使用$.each()循环通过data并追加author

$.each(data, function(i) { 
    $('.quoteList').append(data[i]['author']); 
}); 
+0

它会工作数据[I]但笔者一部分出于某种原因不拾..当我补充说,它什么都不做。 – pashOCONNOR

+0

你在哪里添加此代码?它在'成功:功能(数据){... HERE ...}' – Paul

+0

这就是我插入它的地方。 – pashOCONNOR

0

你需要使用您的数据循环,试试这个

success:function(data){ 
    for (var i in data) { 
     $('.quoteList').append(data[i]); 
    } 
} 
+0

我还没有听说过.. – zzlalani

0

这应该工作: (UPD所有代码:)

+1

不幸的是它返回了一堆“undefined”:( – pashOCONNOR

+0

请尝试使用$ .ajax这个选项: contentType:“application/json” – ka3yc

+0

以及如果“data”当属“串”,你可能需要在JSON解析这个我用[json2.js]:(http://code.ohloh.net/file?fid=6zoZlEsxuWphE-W_4_Psb9cBh9U&cid=IE7HnizPlgE&s=&fp=289108&mp=&projSelected =真#L0)为这个图书馆: json.parse(数据); // 然后处理数据阵列 – ka3yc

2

PHP可能有缺陷,因为json_encode被调用两次,这是不常见的。正如所写的,这将把行压扁成JSON字符串,但仅仅是字符串,然后再将JSON编码成字符串数组。这可能不是你想要的,因为它可以打印接收到的数据,但不能访问将被解码为字符串而不是对象的行的组件。

比较https://stackoverflow.com/a/6809069/103081 - 在这里,PHP使用括号内的单个JSON对象回显回调()

我怀疑修复貌似https://stackoverflow.com/a/15511447/103081 并且可以按如下调整:

header('Content-Type: application/json'); 
require 'database.php'; 
mysql_query('SET CHARACTER SET utf8'); 
$myjsons = array(); 
$qry = 'SELECT * FROM quotes ORDER BY id'; 
$result = mysql_query($qry); 

while($row = mysql_fetch_assoc($result)){ 
    $myjsons[] = $row; 
} 
echo $_GET['callback'] . '(' . json_encode($myjsons) . ')'; 

一旦你有了这个,你应该找回正确的JSON为对象的数组,可以使用@ Felix的代码在客户端。

+0

你和@ Felix的解决方案一起工作:d非常感谢你 – pashOCONNOR

+0

高兴我们帮助! – Paul

0

你的问题是在这里:

while($row = mysql_fetch_assoc($result)){ 
    $myjsons[] = json_encode(array($row)); 
} 
echo $_GET['callback'] . '(' . json_encode($myjsons) . ')'; 

你需要的东西是这样的:

while($row = mysql_fetch_assoc($result)){ 
    $myjsons[] = $row; 
} 
$myjsons['callback'] = $_GET['callback']; 
echo json_encode($myjsons);