所以我遇到了JSONP的问题。我终于设法将我的JSONP数据加载到我的html文件中,但我似乎无法打印所有数据。我已经尝试过for循环和$ .each,但没有成功。
php文件中的JSONP
<?php echo $_GET["callback"] ?> (
{
"expo":"pit",
"datum":"05.06.2011 - 05.06.2016",
"img":"images/pit_home.jpg",
"link":"indexpit.html"
},
{
"expo":"Space Odessy 2.0",
"datum":"17.02 - 19.05.2013",
"img":"images/so_home.jpg",
"link":"indexso.html"
}
);
调用JSONP的脚本
<script type="text/javascript">
$.ajax({
type: 'GET',
jsonpCallback: 'jsonCallback',
contentType: 'application/json',
dataType: 'jsonp',
url: 'http://mllsdemode.be/Ex-cache/home.php',
success: function(json) {
for (var key in json) {
var el = document.getElementById("home");
el.innerHTML = "<li><a href=" + json.link + " data-ajax='false'><img src=" + json.img + "><div class='dsc'>" + json.expo + "<br><em>" + json.datum + "</em></div></a></li>";
}
},
error: function() { alert("Error reading jsonP file"); }
});
</script>
任何人都知道我应该怎么做才能打印所有信息?此刻我只得到坑的数据,而不是Space Odessy 2.0的数据。
答案 0 :(得分:0)
The JSONP should be:
<?php echo $_GET["callback"] ?> (
[
{
"expo":"pit",
"datum":"05.06.2011 - 05.06.2016",
"img":"images/pit_home.jpg",
"link":"indexpit.html"
},
{
"expo":"Space Odessy 2.0",
"datum":"17.02 - 19.05.2013",
"img":"images/so_home.jpg",
"link":"indexso.html"
}
]
);
您错过了数组周围的[]
,因此您将两个参数传递给回调函数而不是一个数组。
之后,你的循环错了。它正在处理单个对象,而不是数组,并且每次都替换home
内部HTML而不是附加。
success: function(json) {
var $home = $("#home");
$home.empty();
$.each(json, function(i, el) {
$home.append("<li><a href=" + el.link + " data-ajax='false'><img src=" + el.img + "><div class='dsc'>" + el.expo + "<br><em>" + el.datum + "</em></div></a></li>");
});
}
答案 1 :(得分:0)
<?php echo $_GET["callback"] ?> ([
{
"expo":"pit",
"datum":"05.06.2011 - 05.06.2016",
"img":"images/pit_home.jpg",
"link":"indexpit.html"
},
{
"expo":"Space Odessy 2.0",
"datum":"17.02 - 19.05.2013",
"img":"images/so_home.jpg",
"link":"indexso.html"
}]);
$(json).each(function (index, item) {
var el = document.getElementById("home");
el.innerHTML += ("<li><a href=" + item.link + " data-ajax='false'><img src=" + item.img + "><div class='dsc'>" + item.expo + "<br><em>" + item.datum + "</em></div></a></li>");
});
答案 2 :(得分:0)
试试这个。
json = $.parseJSON(json);
现在你可以像下面这样循环遍历:
for(i=0; i<json.length; i++)
{
alert(json[i].expo);
}
您的数组必须采用[{},{}];
格式由于