【问题标题】:Turn array of jQuery.get results from array into string within console将 jQuery.get 结果数组从数组转换为控制台中的字符串
【发布时间】:2015-08-17 17:46:51
【问题描述】:

我在控制台中遇到了一些问题。我正在使用以下代码,该代码采用 URL 数组并从这些 URL 中获取源代码。

var URL = ["http://www.website.com", "http://www.anotherwebsite.com"];
var str = [];

$.each(URL, function(index, fetch) {
   $.get(fetch, function(sourcecode) {
     str.push(sourcecode); 
   })
 });

console.log(str);

这将在控制台中返回以下数组:

但是,我需要将该数组转换为所有源代码的单个字符串。我尝试使用 str.join 但这不起作用。我需要控制台看起来像这样:

也许我只是遗漏了一段简单的代码,但我无法让它工作。

注意:这是在 Google Chrome 扩展程序中,因此跨域请求不是问题。

【问题讨论】:

  • 我尝试使用它 - 不起作用。它返回一个空数组。
  • 你确定console.log(str); 输出数组与图像一样。因为$.get 是异步的,所以值可以随时推送
  • str = str + ...
  • 上面只发布了一个答案。我之前尝试过,但在控制台中返回一个空行。不知道为什么会这样做,尤其是因为在您尝试将其更改为字符串之前它是一个普通数组。

标签: jquery arrays google-chrome-extension console


【解决方案1】:

$.get 不是您想要的。 “由于浏览器的安全限制,大多数“Ajax”请求都受制于同源策略;请求无法成功地从不同的域、子域、端口或协议中检索数据。”

您想改用$.ajax

这会让你接近:

var URL = ["http://www.google.com", "http://www.jquery.com"];
var str = "";

$.each(URL, function(index, fetch) {
    $.ajax({
      url: fetch,
      dataType: "jsonp",
      success: function (sourcecode) {
         str += sourcecode;
      }
    });
 });

console.log(str);

http://jsfiddle.net/0zueyx97/

但是你还是会遇到一些错误:

语法错误:预期的表达式,得到' SyntaxError: 预期的表达式,得到 '

这是由于跨域问题See Here for solutions

【讨论】:

  • 不幸的是,我已经尝试过了。它返回一个空行。我完全不知道为什么会这样。
  • 更新:如果 console.log 写在 str += 源代码旁边,它确实有效。但是,控制台中的结果是来自两个 URL 的源代码字符串,但在不同的行中,几乎就像一个数组。我可以在函数外访问变量,它不是单个字符串与源代码的组合。
  • 我试过了,它在控制台中返回一个空行。我将 console.log 放在函数中,控制台中没有显示任何内容。此代码在 Google Chrome 扩展程序中,跨站点请求不是问题。
  • 仍然会出现一个空行,就像数组不会变成单个字符串一样。跨域请求不会成为问题,因为这是在 Google Chrome 扩展程序中。
猜你喜欢
  • 2013-04-12
  • 2010-12-13
  • 2013-06-07
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
相关资源
最近更新 更多