2013-08-23 26 views
3

真的很抱歉,如果這是一個愚蠢的問題,但我似乎無法得到它的工作。正如標題所說,我正在嘗試加載外部js文件並將其作爲純文本分配給變量。該項目是一個簡單的js「編譯器」,它將多個js文件縫合在一起,並將它們縮小爲一個。我目前使用$ .get()方法並將響應追加到一個字符串。如何以純文本形式加載外部js文件並將其作爲字符串分配給變量

問題是處理上述問題的js文件也需要包含在最終的縮小文件中。我可以加載所有其他文件並將它們拼接在一起,但是當我將這個主文件加載到自己的源文件中時,它似乎會評估並覆蓋本身,從而停止該過程。

目前我已經通過加載副本作爲.txt文件來解決問題,但這意味着我必須保持兩個文件是最新的,這是不理想的。

我找到了this article,但它指的是通過頭部腳本標記加載的JavaScript。

任何幫助,將不勝感激。我會很高興地發佈代碼,但不知道哪些位會有用。

更新:我可能應該提到該項目需要完全運行客戶端,所以我不能使用PHP/.NET頁面。我加載的所有文件都位於同一個域中。

+0

您將需要發出帶有js文件的URL,而t Ajax請求母雞提取結果。請參閱XMLHttpRequest。 – fred02138

+0

只需發送一個AJAX請求。如果由於瀏覽器限制而無法執行此操作,請通過服務器端腳本對其進行代理, – Blender

+0

如果幫助我正在使用jQuery get()方法加載js文件。對於大多數文件,我只是將響應附加到字符串變量。但是,當我將主要的js文件加載到它自己的時候,它全部中斷。 –

回答

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> 

重要提示:請注意,您需要做的成功的功能,裏面所有的後期處理AJAX。 See this link對於一些簡單的AJAX示例。

請注意,您可以通過在AJAX代碼塊中指定data:參數將數據發送到PHP文件。或者,您可以省略該行,並簡單地將文件名硬編碼到PHP文件中。

檢索到的js文件的文本作爲函數參數(本例中稱爲'whatigot')指定的變量中的字符串返回到AJAX success函數(來自PHP文件)。做你想做的事;我已經將它存儲在隱藏的<input>控件中,以防您希望檢索AJAX成功函數外部的文本。

PHP會是這個樣子:

loadmyfile.php

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

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

參考文獻: PHP file_get_contents

0

嘗試使用阿賈克斯。得到()

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

+0

我在這裏添加了一個解釋和一些示例代碼:http://jsfiddle.net/e8JNu/ –

+0

我使用這種確切的方法和大多數文件它工作正常,但它似乎打破了我自己加載文件。那有意義嗎? –

+0

我應該補充說,我需要整個事情完全運行客戶端,所以我無法從PHP/.net加載 –

相關問題