我可以看到firebug中的响应是正确的,但实际上无法访问它返回的数据 - 需要一个指针。我当然试图将一个条目的时间戳放入div中 - div确实存在。
jquery的
$(document).ready(function(){
$.ajax({
url: 'http://www.testurl/api.php',
data: {check: 'one'},
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'jsonpCallback',
success: function(){
alert("success");
}
});
});
function jsonpCallback(data){
$('#jsonpResult').text(data.timestamp);
}
PHP
<?php
header("content-type: text/javascript");
require_once('Connections/con.php');
mysql_select_db($database_ey, $ey);
$query_pledges = "SELECT * FROM pledges ORDER BY timestamp DESC LIMIT 10";
$pledges = mysql_query($query_pledges, $ey) or die(mysql_error());
$totalRows_pledges = mysql_num_rows($pledges);
if (isset($_GET['check'])) {
$responses = array();
while ($row_pledges = mysql_fetch_assoc($pledges)) {
$response = array(
'FirstName' => $row_pledges['FirstName'],
'Surname' => $row_pledges['Surname'],
'Country' => $row_pledges['Country'],
'pledge1' => $row_pledges['pledge1'],
'pledge2' => $row_pledges['pledge2'],
'pledge3' => $row_pledges['pledge3'],
'timestamp' => $row_pledges['timestamp']
);
$responses[] = $response;
}
echo $_GET['callback'] . '(' . json_encode($responses) . ');';
}
?>
我在萤火虫中的回答看起来像
jsonpCallback([{"FirstName":"me","Surname":"lastname","Country":"United Kingdom","pledge1":"pledgeIcon1","pledge2":"pledgeIcon2","pledge3":"pledgeIcon4","timestamp":"1402066487"}]);
如上所述,我希望能够在jquery中循环结果并附加到各种div
答案 0 :(得分:0)
我需要的循环看起来像这样
function jsonpCallback(data) {
$.each(data, function (i, item) {
$('#jsonpResult').append(
$('<div/>')
.addClass("myclass")
.text(item.timestamp) //item.timestamp
);
});
}
答案 1 :(得分:0)
因为你的jsonpresponse是一个数组,你试图像一个对象一样使用它。
function jsonpCallback(data){
$('#jsonpResult').text(data.timestamp); // Add the [0] and look what happens.
}
使用响应的正确方法是:
function jsonpCallback(data){
$('#jsonpResult').text(data[0].timestamp);
}
所以,如果你需要迭代将是这样的
使用每个:
function jsconpCallback(data){
data.each(function(item){
$('#jsonpResult').append(item.timestamp+"<br />");
});
}
或标准:
function jsonpCallback(data){
for(var i = 0 ; i < data.length ; i++){
$('#jsonpResult').append(item.timestamp+"<br />");
}
}
我正在使用append,因为我们期待多个数据(一个数组)。
如果您只需要一个大对象,请删除发送de jsonP响应的PHP文件中的de []。
希望它有所帮助。