2016-05-24 86 views
1

有沒有什麼方法可以從javascript http適配器讀取.json文件(位於服務器中)? 我嘗試了很多在互聯網上描述的方法,但他們似乎並沒有工作,因爲他們是爲瀏覽器JavaScript(我得到錯誤,如XMLHttpRequest未定義或activeObject未定義)。使用mobileFirst JavaScript適配器讀取本地服務器.json文件

例如,我用這個,但它不工作:

function readTextFile(file) 
{ 
    var rawFile = new XMLHttpRequest(); 
    rawFile.open("GET", file, false); 
    rawFile.onreadystatechange = function() 
    { 
     if(rawFile.readyState === 4) 
     { 
      if(rawFile.status === 200 || rawFile.status == 0) 
      { 
       var allText = rawFile.responseText; 
       return allText; 
      } 
     } 
    } 
    rawFile.send(null); 
} 

有什麼辦法,我能做到這一點,而無需使用java嗎?

+0

您打算如何存儲JSON文件? –

+0

正如我所說,.json文件將在服務器內。 – papakias

回答

2

您可以使用Javascript讀取文件,如下所示。

function readFile(filename) { 
    var content = ""; 

    var fileReader = new java.io.FileReader(filename); 

    var bufferedReader = new java.io.BufferedReader(fileReader); 

    var line; 

    while((line = bufferedReader.readLine()) != null) { 
     content += line; 
    } 

    bufferedReader.close(); 

    return content; 
} 

function test() { 
    var file = 'yourfilename.json'; 
    var fileContents; 
    try { 
     fileContents = JSON.parse(readFile(file));  
    } catch(ex) { 
     // handle error     
    } 

    return { 
     fileContents: fileContents 
    }; 
} 
+0

完全是我想要的!你是老闆,老兄! – papakias

+1

一個非常小的更正:我使用了行 fileContents = JSON.parse(readFile(file)); 爲了使返回的對象返回爲JSON而不是文本 – papakias

+0

如果文件在適配器部署本身內,我們如何檢索文件? – edwin

0

對於那些有興趣使用Java。

你可以做的一件事是創建一個使用Java代碼的Javascript適配器。設置起來非常簡單。

首先創建一個Javascript適配器。

然後在server/lib文件夾下創建一個Java類。我在包com.sample.customcode下創建了類ReadJSON.java

裏面的ReadJSON.java

public class ReadJSON { 
    public static String readJSON() throws IOException { 
     //Open File 
     File file = new File("file.txt"); 
     BufferedReader reader = null; 
     try { 
      //Create the file reader 
      reader = new BufferedReader(new FileReader(file)); 
      String text = null; 

      //read file 
      while ((text = reader.readLine()) != null) {} 
     } finally { 
      try { 
       //Close the stream 
       reader.close(); 
      } 
     } 
     return "the text from file"; 
    } 
} 

裏面你的JavaScript適配器,你可以使用Java方法如下圖所示:

function readJOSN() { 
    var JSONfromServer = com.sample.customcode.ReadJSON.readJSON(); 
    return { 
     result: JSONfromServer 
    }; 

} 

希望這有助於。

+0

我的答案是使用Java。 –

+0

感謝您的寶貴幫助。我希望這可以用一個javascript適配器來完成......非常有幫助的答案然而 – papakias

相關問題