【问题标题】:How to get data from another url?如何从另一个网址获取数据?
【发布时间】:2018-06-26 23:11:11
【问题描述】:

这是两难境地。我正在对网页 #1 (http://www.blankmediagames.com/Trial/#start) 上的这些不同报告进行投票,并且我正在尝试从网页 #2 (http://www.blankmediagames.com/Trial/viewReport.php?id=1388499) 中获取一个名为“数据”的特定对象。但是,当我使用此代码时,它只返回整个网页。

var tempVar;
var reportPage = new XMLHttpRequest();
reportPage.open('GET', '/Trial/viewReport.php?id=1388499', true);
reportPage.onreadystatechange = function() {
   if (reportPage.readyState === 4)  { 
   tempVar = (reportPage.responseText);
  }
};
reportPage.send(null);

当我在网页 #1 上时,我试图从网页 #2 中获取名为“数据”的对象并将其存储在另一个变量中。有什么办法可以做到这一点吗?

这基本上是网页 #2 中的内容:

<!DOCTYPE html>
...
    <script>
            $(document).ready(function()
            {
                data = {"ReportID":"1388499","Username":"FatJellyBean","ReportFile":"Report1386875","Reason":"Gamethrowing","Appeal":"","Submitted":"Jun. 10, 2018 12:41 pm","numReports":2,"players":[{"username":"TooEzJukedBaited","ign":"ImJester","role":"SerialKiller","slot":1},{"username":"RISTR1K","ign":"Covfefe","role":"Doctor","slot":2},{"username":"balintka0607","ign":"William Phips","role":"Retributionist","slot":3},{"username":"JohnGotti","ign":"Karl Marx","role":"Veteran","slot":4},{"username":"Konrad4123","ign":"Pepe","role":"Escort","slot":5},{"username":"Celerian","ign":"Jeff","role":"Jester","slot":6},{"username":"foxesfan9","ign":"dabbingisnotcool","role":"Executioner","slot":7},{"username":"FatJellyBean","ign":"ifyoudonthitsubm","role":"Medium","slot":8},{"username":"GalaxyUnivern","ign":"Eliza Macbeth","role":"Godfather","slot":9},{"username":"Davve27","ign":"Katana","role":"Investigator","slot":10},{"username":"GayBobFaggyPants","ign":"Sarah Bishop","role":"Godfather","slot":11},{"username":"holysilman","ign":"Lil Tay","role":"Sheriff","slot":12},{"username":"pingvingen","ign":"Garfunkle","role":"Lookout","slot":13},{"username":"fefecute","ign":"Fefecute","role":"Framer","slot":14},{"username":"Frogers98","ign":"James Russel","role":"Jailor","slot":15}]};
                Trial.populateFilter(data);
                $
                                $('.reportedPlayer').html($('#FatJellyBean').next().html());
                $('#highlighter').show();
            });
            function highlight(elem,start,end)
            {
                var el=elem[0];
                var eln= (el.children.length > 0) ? el.lastChild : el.childNodes[0];
                var range=document.createRange();
                var sel=window.getSelection();
                start = (typeof start != 'undefined') ? start : 0;
                end = (typeof end != 'undefined') ? end : el.innerHTML.length;
                if(el.children.length > 0) start = end = 0;
                range.setStart(eln,start);
                range.setEnd(eln,end);
                sel.removeAllRanges();
                sel.addRange(range);
                el.focus();
            }
        </script>
...
</html>

【问题讨论】:

  • 您在第 2 页的何处看到此数据对象?您最好的选择是使用 json 端点而不是打满一页,但如果它包含在某个元素中,则有一些技巧可以提取数据...

标签: javascript jquery arrays ajax


【解决方案1】:

可以将一个对象转移到另一个页面,但不能通过您尝试的方法。

有一些技巧可以使用 url 参数:How to pass javascript variables from one html page to other html page

但是,更建议构建端点和 API 来传递信息。这种架构涉及更多工作,但可以解决您的确切问题:How to pass javascript object from one page to other

【讨论】:

    【解决方案2】:

    遗憾的是,Same Origin Policy 阻止从其他域(包括子域)返回数据。不过,您可以尝试使用JSONP

    【讨论】:

    • 你没看错,但是同源策略在这里并不适用,因为@Lord Nazo 正在从同一个域获取数据。 (例如blankmediagames.com)
    • 啊,你是对的,出于某种原因,我将 URL 读取为子域
    猜你喜欢
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多