从ajax获取数据作为回调函数的属性值

时间:2016-10-06 03:10:23

标签: ajax callback

我是ajax的新手。我试图找到答案,但没有找到相应的答案。基本上我需要使用ajax来获取一些数据,之后将这些数据放到变量中,以后将用作自定义代码的回调函数的属性。

这个ajax部分只是myObject的一种方法。

所以,最后我需要这种功能:

myObject.getData(url, callback(data) {
//my custom code of what I wanna do after ajax is complete
});

我的代码

/ * 这里有一些属性和其他方法不是这种情况 * /

//This is where Im stuck
var getData = function getFromUrl($url) {
         $.ajax({
                type: 'get',
                url: $url,
                dataType: 'html',
                success: function(html) {
                        $obj = html;//Im lost on this step!
                            },
        });
};

P.S. Im trying to find an async way (without using async:false). Hope its possible

1 个答案:

答案 0 :(得分:0)

首先我遇到了很多问题。我的第一个问题是No Access-Control-Allow-Origin,大多数网站都不允许您出于安全原因而废弃获取数据。幸运的是,某人已经成为代理人: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