0

特定の半径で再生されている映画の上映時間のリストを返そうとしています。API からのデータを表示するために作成している JavaScript クラスがあります。私は実際にここから与えられた例に従いました。コールバック関数 (dataHandler) をクラスの外に移動すると正常に動作するため、これはある種のスコーピングの問題であることはわかっています。

これが私のクラスです (ダムダウン) – このコードをそのまま実行すると、「dataHander is undefined」という参照エラーが発生します。

前もって感謝します!ここに役立つ十分な情報があることを願っています..

function Locator() {
    // Init
    function init(){
        test();
    };


    function test() {
        // construct the url with parameter values
        var apikey = "myapikey";
        var baseUrl = "http://data.tmsapi.com/v1";
        var showtimesUrl = baseUrl + '/movies/showings';
        var zipCode = "78701";
        var d = new Date();
        var today = d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate();

        // send off the query
        $.ajax({
            url: showtimesUrl,
            data: { startDate: today,
                zip: zipCode,
                api_key: apikey,
                jsonp: "dataHandler"
            },
            dataType: "jsonp",
        });

        // callback to handle the results
        function dataHandler(data) {
            console.log(data);
        }

    };

    init();
    // Return
    return {

    };
};
4

2 に答える 2

0

問題は、jsonp コールバックの処理方法だと思います。

という名前のパラメーターを使用して jsonp コールバックをjsonp渡し、関数名を渡していますdataHandlerが、関数dataHandlerは method 内のクロージャー メソッドtestです。応答が返されると、指定dataHandlerされたメソッドが存在しないグローバル コンテキストで検索されるため、エラーが発生します。

ajax ハンドラーsuccessを使用して、返されたデータを次のように処理できます。

// send off the query
$.ajax({
    url: '/echo/json/',
    data: {
        startDate: '',
        zip: '',
        api_key: ''
    },
    jsonp: 'jsonp',
    dataType: "jsonp",
    success: function (data) {
        console.log(data);
    }
});

デモ:フィドル

于 2014-09-23T09:03:34.357 に答える
0

$.ajaxコードを次のように調整してみてください。

$.ajax({
    url: showtimesUrl,
    data: {
        startDate: today,
        zip: zipCode,
        api_key: apikey
    },
    dataType: "jsonp",
    jsonp: "jsonp"
}).done(dataHandler);

これは、 OnConnectの v1 API ドキュメントに基づいています。

于 2014-09-23T06:53:36.617 に答える