繁体   English   中英

如何将外部js文件作为纯文本加载并将其作为字符串赋值给变量

[英]How to load an external js file as plain text and assign to variable as a string

真的很抱歉,如果这是一个愚蠢的问题,但我似乎无法让这个工作。 正如标题所说我试图加载外部js文件并将其作为纯文本分配给变量。 该项目是一个简单的js“编译器”,它将许多js文件拼接在一起并将它们缩小为一个。 我目前正在使用$ .get()方法并将响应附加到字符串。

问题是处理上述内容的js文件也需要包含在最终的缩小文件中。 我可以加载所有其他文件并将它们拼接在一起就好了但是当我将这个主文件加载到自身来源js文件时,它似乎评估并覆盖自身,因此停止了这个过程。

暂时我通过将副本加载为.txt文件来解决问题,但这意味着我必须保留两个最新的文件,这是不理想的。

我发现这篇文章,但它指的是通过脚本中的脚本标签加载的javascript。

任何帮助,将不胜感激。 我很乐意发布代码,但不确定哪些位有用。

更新:我可能应该提到项目需要完全运行客户端,所以我不能使用PHP / .NET页面。 我加载的所有文件都在同一个域中。

请注意,$ .get()和$ .post()以及$ .ajax()都是一样的。

$ .get和$ .post只是带有预设的$ .ajax()的简写版本(显然, type: "GET"type:"POST"表示一个...)。 我更喜欢使用$ .ajax,因为格式可以更结构化,因此更容易学习/使用。

Javascript / jQuery看起来像这样:

<script type="text/javascript">

    $(document).ready(function() {
        $.ajax({
            type: "POST",
            url: "loadmyfile.php",
            data: 'filename=js/myscript.js',
            success: function(whatigot) {
                //alert('Server-side response: ' + whatigot);
                $('#myhiddentext').val(whatigot);
            } //END success fn
        }); //END $.ajax
    }); //END $(document).ready()

</script>

重要提示:请注意,您需要在success函数中执行所有后AJAX处理。 有关一些简单的AJAX示例, 请参阅此链接

请注意,您可以通过在AJAX代码块中指定data:参数将数据发送到PHP文件。 或者,您可以省略该行,只需将文件名硬编码到PHP文件中。

检索到的js文件的文本返回到AJAX success函数(来自PHP文件),作为指定为函数param的变量中的字符串(在本例中,称为“whatigot”)。 做你想做的事; 我已将其存储在隐藏的<input>控件中,以防您想要检索文本外部的AJAX成功函数。

PHP看起来像这样:

loadmyfile.php

<?php
    $fn = $_POST['filename'];

    $thefile = file_get_contents($fn);
    echo $thefile;

参考文献: PHP file_get_contents

尝试使用Ajax.get()

var script;
$.get('script.js', function(data) {
  script = data;
});

对于Ajax.get(),它将在你的域内工作,你不能调用外部域,如果你的应用程序需要加载外部JS文件,那么我的猜测是你必须使用PHP或其他服务器端语言:

var script;
$.get('getScript.php', {url: "http://test.com/script.js"}function(data) {
  script = data;
});

getScript.php中,您可以使用CURLfile_get_contents

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM