我是ajax新手。我试图寻找答案,但没能找到相应的答案。基本上我需要使用 ajax 来获取一些数据,然后将此数据放入变量中,该变量稍后将用作具有自定义代码的回调函数的属性。
这个ajax部分只是myObject的一个方法。
所以,最终我需要这种功能:
myObject.getData(url, callback(data) {
//my custom code of what I want to do after ajax is complete
});
我的代码
/*
HERE COMES SOME PROPERTIES AND OTHER METHODS WHICH IS NOT THE CASE
*/
//This is where I'm stuck
var getData = function getFromUrl($url) {
$.ajax({
type: 'get',
url: $url,
dataType: 'html',
success: function(html) {
$obj = html;//I'm lost on this step!
},
});
};
附注我正在尝试找到一种异步方式(不使用 async:false)。希望有可能
首先我遇到了很多问题。我的第一个问题是没有访问控制允许来源,出于安全原因,大多数网站不允许您放弃获取其数据。幸运的是,有人已经做了代理:http://cors.io/。第二个问题是你不能在 https 上嵌入 http,所以我不能使用 jsfiddle 来向你展示这个工作原理,它适用于我的本地环境。获得原始 html 后,您必须解析它,您可以使用完整的正则表达式来完成它,或者您可以使用 jquery 来增强自己的能力,就像我在这个示例中所做的那样。我们正在做的是检查 stackoverflow.com 并使用 .find(".bounty-indicator-tab").first().html(); 获取特色问题的数量。但是一旦你有了完整的 html,你就可以获得你需要的任何数据。
var getData = function getFromUrl(url) {
$.ajax({
url: 'http://cors.io/?' + url,
crossDomain: true,
dataType: 'html',
success: function (html) {
var match = $(html).find(".bounty-indicator-tab").first().html();
console.log(match);
return match;
},
error: function(e) {
console.log('Error: '+e);
}
});
};
url = 'http://stackoverflow.com/';
data = getData(url);
//You cant use data yet because its working async