将其他网站的内容设置为JS变量

时间:2019-01-02 12:08:26

标签: javascript variables url

是否有任何JS函数将URL的内容从另一个域获取到变量?具体来说,我需要设置以下站点的内容:https://www.alza.cz/apps/externalbanner.ashx?type=1785作为JS变量的字符串。我尝试了几个AJAX代码,.load jQuery功能,但没有任何效果。我开始认为使用JS不可能做到这一点,请问您能帮我吗?充其量,可以将字符串直接分成3个变量,其中分隔符是一个空格,但这不是我自己可以做的。

最好, 彼得

1 个答案:

答案 0 :(得分:0)

从JS发送ajax请求的最常见方法是:

获取api (可能不是所有浏览器都支持的新功能)

fetch('url')
  .then(response => response.text()) // response is text format
  .then(content => {
    /* do something here*/
    alert(content))
  }
)

还有旧的XMLHttpRequest类

  const xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     alert(this.responseText);
    }
  };
  xhttp.open("GET", "url", true);
  xhttp.send();

注意:

  • 在主线程上发送AJAX请求是一个坏主意,它会冻结网站,因此您将在另一个线程上获取数据

  • 远程服务器可能不允许您从其他页面获取其内容,在这种情况下,JavaScript控制台将显示错误,例如:

CORS策略已阻止从来源“ https://google.com/”访问“ http://localhost:3000”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

还有其他一些不太严格的限制,例如:从http到https不进行抓取,所有失败的请求都将记录到控制台


要将字符串分成多个部分,请使用

const splitedArray = 'a b c'.split(' ' /* seperate by space */)
splitedArray[0] == 'a'
splitedArray[1] == 'b'
splitedArray[2] == 'c'