1

所以我对 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>

有人知道我应该怎么做才能打印所有信息吗?目前我只得到pit的数据,而不是Space Odessy 2.0的数据。

4

3 回答 3

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>");
    });
 }
于 2013-06-10T15:31:39.130 回答
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>");
});
于 2013-06-10T15:34:36.033 回答
0

试试这个。

json = $.parseJSON(json);

现在你可以像下面这样循环遍历它:

for(i=0; i<json.length; i++)
{
   alert(json[i].expo);
}

您的数组必须采用这种格式 [{},{}];

谢谢

于 2013-06-10T16:33:23.057 回答