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

时间:2013-08-23 16:15:59

标签: javascript jquery

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

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

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

我找到了this article,但它指的是通过头部的脚本标签加载的javascript。

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

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

2 个答案:

答案 0 :(得分:0)

请注意$ .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处理。 See this link用于一些简单的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

答案 1 :(得分:0)

尝试使用 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