我创建了一个从数据库中打印出来的php页面
[{"sha_id":"2","sha_text":"This is 1st sha."},{"sha_id":"4","sha_text":"this is 2nd sha"}]
现在我想从这个中提取每个变量..经过谷歌搜索一段时间后我得到了这个
$(document).ready(function(){
var output = $('#output');
$.ajax({
url: 'http://xxxx.com/android_sha/index.php',
dataType: 'jsonp',
jsonp: 'jsoncallback',
timeout: 5000,
success: function(data, status){
$.each(data, function(i,item){
var landmark = '<h1>'+item.sha_id+'</h1>'
+ item.sha_id+'</p>';
output.append(landmark);
});
},
error: function(){
output.text('There was an error loading the data.');
alert("error");
}
});
});
但它总是警告我的错误。我可能在$.each(data, function(i,item){
出错了,但无法弄清楚应该是什么样的正确格式。
答案 0 :(得分:3)
如果触发警报(“错误”),则并不意味着$ .each函数失败,这意味着jQuery无法加载指定的url或者ajax请求存在其他问题。这会触发错误功能,该功能会警告错误消息。
检查请求是否正常运行,例如使用Chrome的开发人员工具查看网络流量。如果页面返回非200状态代码,那么成功函数不会触发。
答案 1 :(得分:0)
JSONP不是实际上 JSON。 JSONP是获取跨域数据的“黑客”。 JSONP实际上是JavaScript文件。
您需要在函数调用中包装JSON。在您的示例中,您正在发送jsoncallback
回调,因此您需要将JSON包装在其值中。
$callback = $_GET['jsoncallback'];
while($row = mysql_fetch_assoc($result)){
$records[] = $row;
}
echo $callback . '(' . json_encode($records) . ');';