1

さまざまなソースから同時にデータを取得できる汎用関数を作成しようとしています。

私はこの投稿に基づいてソリューションを作成し、最終的には次のようになりました。

var servicesURL = 'http://www.somedomain.com/services/xml_proxy.php?url=';

function getExternalData(service, callback) {
    $.ajax({
        type: 'GET',
        url: servicesURL+service,
        dataType: 'jsonp',
        jsonpCallback: 'myfunction',
        success: function(data) { callback(data); },
        error: function(jqXHR, textStatus, errorThrown) { console.log(textStatus+': '+errorThrown); }
    });
}

getExternalData('data1.xml', function(data) {
    console.log(data)
});

getExternalData('data2.xml', function(data) {
    console.log(data)
});

私が使用しているプロキシのコードは次のとおりです。

<?php
header('Content-type: application/json');
$url = $_GET['url'];
echo 'myfunction('.json_encode(simplexml_load_file($url)).')';
?>

関数を 1 回呼び出すと問題なく動作しますが、(上記のように) 複数の呼び出しを行うと、次のエラーが発生します。

parsererror: エラー: myfunction が呼び出されませんでした

キャッチされていない TypeError: オブジェクト [オブジェクト オブジェクト] のプロパティ 'myfunction' は関数ではありません

どんな助けでも大歓迎です

4

1 に答える 1

1

最初のコールバック内に 2 番目の呼び出しを配置し​​てみてください。それはあなたが抱えている問題を解決するはずです。

http://forum.jquery.com/topic/multiple-jsonp-requests-causing-errors

于 2013-03-06T15:08:31.517 に答える