gpt4 book ai didi

javascript - 使用YQL进行跨域AJAX请求时什么也没得到

转载 作者:行者123 更新时间:2023-11-28 02:09:25 25 4
gpt4 key购买 nike

我使用以下代码来执行使用 YQL 的跨域 AJAX 请求:

function requestCrossDomain( site, callback ) {

function cbFunc(data) {
// If we have something to work with...
alert("inside call back");
if ( data.results[0] ) {
// Strip out all script tags, for security reasons.
// BE VERY CAREFUL. This helps, but we should do more.
data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');

// If the user passed a callback, and it
// is a function, call it, and send through the data var.
if ( typeof callback === 'function') {
callback(data);
}
}
// Else, Maybe we requested a site that doesn't exist, and nothing returned.
else throw new Error('Nothing returned from getJSON.');
}
// If no url was passed, exit.
if ( !site ) {
alert('No site was passed.');
return false;
}

// Take the provided url, and add it to a YQL query. Make sure you encode it!
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=xml&callback=cbFunc';

// Request that YSQL string, and run a callback function.
// Pass a defined function to prevent cache-busting.
$.getJSON( yql, cbFunc );
console.log("outside call back");

}

并按如下方式调用上述内容:
requestCrossDomain('http://www.cnn.com', function(results) {<br/>
alert(results);<br/>
});

当我在 Firefox 中运行上述代码时,虽然响应(在 Firebug 控制台中)显示回调函数(cbFunc)内的网站内容,但它没有显示任何警报。
还有 console.log("inside call back") 的结果第 5 行未在 Firebug 控制台中打印。

任何人都可以建议我哪里出了问题或者对上述问题有任何解释吗?
顺便说一句,我已经经历过:
http://tek-insight.blogspot.in/2010/05/cross-domain-ajax-request-proxy-json.html http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/相关 stackoverflow 问题中可能的解释。

最佳答案

$.getJSON接受作为“成功”响应的回调函数。但如果返回错误(404、500 等),则不会调用此函数。
您需要添加额外的函数才能捕获其他响应场景:

$.getJSON( yql, cbFunc)
.done(function() { console.log( "second success" ); })
.fail(function(jqxhr, textStatus, error) { console.log( "error", textStatus, error ); })
.always(function() { console.log( "complete" ); });

关于javascript - 使用YQL进行跨域AJAX请求时什么也没得到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17323272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com