Javascript YQL AJAX跨域请求已停止工作
我一直在使用下面的代码成功地将外部网页的内容作为字符串读取-我已经一个月左右没有使用这个程序了,但它突然停止工作,即使代码没有更改。我怀疑YQLAPI已经更新了,但是我找不到任何可以理解的文档。(我是JS的初学者)。如果有人能告诉我如何更新我的代码,我将不胜感激 代码:Javascript YQL AJAX跨域请求已停止工作,javascript,ajax,yql,Javascript,Ajax,Yql,我一直在使用下面的代码成功地将外部网页的内容作为字符串读取-我已经一个月左右没有使用这个程序了,但它突然停止工作,即使代码没有更改。我怀疑YQLAPI已经更新了,但是我找不到任何可以理解的文档。(我是JS的初学者)。如果有人能告诉我如何更新我的代码,我将不胜感激 代码: 函数表单已提交(raceID){ if(外消旋体长度0){ savedRaceID=总状花序; raceUrl=”http://www.bbk-online.net/gpt/lap“+raceID+”.htm”; jQuery.
函数表单已提交(raceID){
if(外消旋体长度<4&&raceID>0){
savedRaceID=总状花序;
raceUrl=”http://www.bbk-online.net/gpt/lap“+raceID+”.htm”;
jQuery.ajax=(函数(_ajax){
var协议=location.protocol,
hostname=location.hostname,
exRegex=RegExp(协议+'/'+主机名),
YQL='http'+(/^https/.test(协议)?'s':''+'://query.yahooapi.com/v1/public/YQL?callback=?',
query='从html中选择*,其中url=“{url}”和xpath=“*”;
函数isExternal(url){
return!exRegex.test(url)&&&/:\/\/.test(url);
}
返回函数(o){
var url=o.url;
if(/get/i.test(o.type)&&&!/json/i.test(o.dataType)&&isExternal(url)){
//操纵选项,以便向YQL发出JSONP-x请求
o、 url=YQL;
o、 数据类型='json';
o、 数据={
q:query.replace(
“{URL}”,
url+(o.data?
(/\?/.test(url)“&”:“?”)+jQuery.param(o.data)
: '')
),
格式:“xml”
};
//因为这是一个JSONP请求
//完成===成功
如果(!o.success&&o.complete){
o、 成功=完成;
删除o.complete;
}
o、 success=(函数(_success){
返回函数(数据){
如果(成功){
//假XHR回调。
_成功,叫(这个){
responseText:data.results[0]。替换(/]+?\/>|/gi',)
//错误来自上面-正在对空对象调用REPLACE??
//表示没有返回数据?
}"成功";;
}
};
})(o)成功;
}
return _ajax.apply(这是参数);
};
})(jQuery.ajax);
$.ajax({
url:raceUrl,
键入:“GET”,
成功:功能(res){
processData(res.responseText);
}
});
}
否则{
警报(“请输入有效的比赛号码…”);
}
}
我已经强调了错误的来源-函数似乎没有返回任何数据?测井
数据
到控制台,并查看它实际包含的内容…抱歉,应该尝试一下-它生成:{“查询”:{“计数”:“0”,“创建”:“2017-06-21T09:48:34Z”,“lang”:“en-US”,“meta”:{“消息”:不再支持html表。有关YQL使用条款“}”,请参阅“:[]}”-我已经在这个页面上了,就我所能看到的而言,它没有任何用处,至少应该回答以下问题:是否有任何变化……不确定他们为什么将您链接到ToS,听起来他们更应该链接到YQL API文档,这样您就可以了解关于返回格式的其他选项(?)有。@Tech,请看看这是否对你有帮助,给他一个投票。
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...");
}
}