0

出力がXMLであるPHPスクリプトからエコーされた出力を返すことを意図したAJAXステートメントがあります。

PHP スクリプトに直接移動すると、必要な正確な形式で JSON が出力されます。

Firebug のネットワーク タブにリクエストのステータス 200 OK が表示されていても、AJAX リクエストの「データ」変数が正しく返されません。

XML要素「MP3 and Title」を返すPHP

<?php
    $url = 'http://www.startalkradio.net/?page_id=354';
    $rss = simplexml_load_file($url);
    $items = $rss->channel->item;

    $i = 0;
    $data = array();
    foreach ($items as $item) {
        $data[] = array(
            'title' => (string) $item->title,
            'mp3'   => (string) $item->enclosure['url'],
        );
        if (++$i == 3) break;
    }

    $jsdata = json_encode($data);
    echo htmlspecialchars($jsdata, ENT_NOQUOTES, 'utf-8');
?>

JPlayer スクリプトを設定する AJAX 呼び出し。data返されないようです。

$(document).ready(function() {
    $.get(
        "http://www.freeenergymedia.com/getxml2.php", 
        function(data) {
            new jPlayerPlaylist({
                jPlayer: "#jquery_jplayer_1",
                cssSelectorAncestor: "#jp_container_1"
            }, 
            data, 
            {        <!-- here I am returning the php script to populate XML into JPlayer. -->
                swfPath: "js",
                supplied: "mp3, oga",
                wmode: "window"
            });
        }
    );
});

問題のリンク

XML は PHP スクリプトリンクによって出力されるものと同じであることに注意して ください。

4

1 に答える 1

1

あなたは XML を返していると言いますが、あなたの PHP は を使用していますjson_encode()。したがって、$.get()呼び出しは次のように指定する必要があります。

//using `$.getJSON()` will set the dataType property to json so your server-side output will be parsed into a JavaScript object
$.getJSON(
        "http://www.freeenergymedia.com/getxml2.php", 
        function(data) {
            console.log(data);//<--use this to inspect the JSON object returned from the server, make sure it's in the proper format
            new jPlayerPlaylist({
                jPlayer: "#jquery_jplayer_1",
                cssSelectorAncestor: "#jp_container_1"
            }, 
            data, 
            {        <!-- here I am returning the php script to populate XML into JPlayer. -->
                swfPath: "js",
                supplied: "mp3, oga",
                wmode: "window"
            });
        }
    );

data次のようになります。

data = [
    {"title":"some title", "mp3":"path to some song"},
    {"title":"some other title", "mp3":"path to some other song"},
    etc...
];
于 2011-12-08T17:50:37.127 に答える