【问题标题】:Jquery split() is not a function?Jquery split() 不是函数?
【发布时间】:2015-07-11 10:37:11
【问题描述】:

完全不知道为什么这不起作用。

var jimmy = $.get("info.txt");
jimmy = jimmy.split("\n");

为什么一定要这样:

$.get("info.txt", function(jimmy) {
    jimmy = jimmy.split("\n");
});

第二种方法效果很好,但如果我能用第一种方法做的话,事情会更容易,我不知道为什么不能做。跟php很不一样。

【问题讨论】:

  • 当您使用 AJAX 时,您可能会发现使用单独定义的回调函数并将执行逻辑移至这些回调函数非常有用。它确实需要以不同的方式思考问题,但可以帮助您避免将来出现可怕的嵌套问题。

标签: jquery split


【解决方案1】:

在您的开发者工具中检查一下:

var jimmy = $.get("info.txt"); console.log(jimmy);

您将看到 jimmy 将有关于此 $.get 正在做什么以及响应将是什么的 javascript 信息(回调)。这是您想要的更多信息,您只需要响应数据。 第一个选项的另一件事是第二行在响应返回之前已经执行,因为 $.get 是异步的。

这就是第二个选项有效的原因。只有在加载 info.txt 时,它才会执行 get 函数(回调)内部的内容。所以只有这样才能读取信息。

要使其全球化,您可以这样做。

var sjors = '';
$.get("info.txt", function(jimmy) {
    sjors = jimmy.split("\n");
});

在函数外部创建全局变量。现在 sjors 将是一个包含 jimmy 内容的全局变量。

【讨论】:

  • $.get 是一个异步调用。您也可以在 PHP 中进行异步调用,例如使用分叉或 cURL 请求,这可能更常见。但是,它不起作用的原因是由于 AJAX 的异步特性。我建议更改 PHP 参考以更准确。
  • 这意味着你永远无法从文件中获取数据并将其分配给全局变量?似乎非常有限。
【解决方案2】:

$.get 是一个异步函数,这意味着它不会立即返回结果。您需要为其提供一个“回调”函数,该函数将在 AJAX GET 请求完成后运行。

【讨论】:

    【解决方案3】:

    当然,请求需要时间,因此不会立即检索到。

    你能做的是

    $.get("info.txt", function(jimmy) {
        window.jimmy = jimmy.split("\n");
    });
    

    那么就可以jimmy访问了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 2017-04-18
      • 1970-01-01
      • 2018-10-01
      • 2016-11-01
      • 2014-03-26
      相关资源
      最近更新 更多