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

问题描述 投票:0回答:1

我是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)。希望有可能

ajax callback
1个回答
0
投票

首先我遇到了很多问题。我的第一个问题是没有访问控制允许来源,出于安全原因,大多数网站不允许您放弃获取其数据。幸运的是,有人已经做了代理: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
© www.soinside.com 2019 - 2024. All rights reserved.