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>

すべての情報を印刷するために何をすべきか知っている人はいますか? 現時点では、スペース オデッシー 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"
        }
    ]
);

配列の前後に欠落して[]いたため、1 つの配列ではなく 2 つの引数をコールバック関数に渡していました。

その後、あなたのループは間違っています。配列ではなく単一のオブジェクトを処理し、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 に答える