用jquery循环jsonp [重复]
Posted
技术标签:
【中文标题】用jquery循环jsonp [重复]【英文标题】:Looping through jsonp with jquery [duplicate] 【发布时间】:2014-07-28 00:43:15 【问题描述】:我可以在 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
【问题讨论】:
你不能在jsonpCallback()
这样做吗?
我似乎无法访问它 - 任何示例都值得赞赏
那么你在函数中使用$('#jsonpResult').text( JSON.stringify(data) );
而不是你当前的代码会得到什么?如果data
是数组,则data.timestamp
无效!
这给了我完整的回应,让我放心了数据在那里。我如何单独打破它
仍然无法从那里找到我要找的东西
【参考方案1】:
我需要的循环是这样的
function jsonpCallback(data)
$.each(data, function (i, item)
$('#jsonpResult').append(
$('<div/>')
.addClass("myclass")
.text(item.timestamp) //item.timestamp
);
);
【讨论】:
【参考方案2】:这是因为您的 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 []。
希望对你有帮助。
【讨论】:
以上是关于用jquery循环jsonp [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Jquery ajax响应说“意外的令牌':'”(使用jsonp作为数据类型)[重复]