YQL AJAX跨域请求停止工作

时间:2017-06-21 09:21:14

标签: javascript ajax yql

我一直使用以下代码成功地将外部网页的内容作为字符串读取 - 我在一个月左右的时间内没有使用过该程序,但即使代码没有更改,它也突然停止工作。我怀疑YQL API已经更新但我找不到任何我能理解的文档。 (我是JS的初学者)。如果有人能指出我如何更新我的代码,那将非常感激!

代码:

function formSubmitted(raceID) {
    if(raceID.length < 4 && raceID > 0){
        savedRaceID = raceID;
        raceUrl = "http://www.bbk-online.net/gpt/lap"+raceID+".htm";
        jQuery.ajax = (function(_ajax){

    var protocol = location.protocol,
        hostname = location.hostname,
        exRegex = RegExp(protocol + '//' + hostname),
        YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
        query = 'select * from html where url="{URL}" and xpath="*"';
        function isExternal(url) {
            return !exRegex.test(url) && /:\/\//.test(url);
        }

        return function(o) {

        var url = o.url;

        if ( /get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url) ) {
                // Manipulate options so that JSONP-x request is made to YQL
            o.url = YQL;
            o.dataType = 'json';
            o.data = {
            q: query.replace(
                '{URL}',
                url + (o.data ?
                    (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data)
                    : '')
                ),
                format: 'xml'
            };

            // Since it's a JSONP request
            // complete === success
            if (!o.success && o.complete) {
                o.success = o.complete;
                delete o.complete;
            }

            o.success = (function(_success){
                return function(data) {
                    if (_success) {
                        // Fake XHR callback.
                        _success.call(this, {
                            responseText: data.results[0].replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')


//THE ERROR IS COMING FROM ABOVE - REPLACE IS BEING CALLED ON A NULL OBJECT??
//SUGGESTS NO DATA RETURNED?


                            }, 'success');
                        }

                    };
            })(o.success);

        }

        return _ajax.apply(this, arguments);

    };

})(jQuery.ajax);

        $.ajax({
    url: raceUrl,
    type: 'GET',
    success: function(res) {
        processData(res.responseText);
    }
});
    }
    else{
        alert("Please enter a valid race number...");
    }
}

我已经突出显示错误的来源 - 似乎该函数没有返回任何数据?

0 个答案:

没有答案