2016-05-24 4 views
1

Есть ли способ, которым я могу прочитать файл .json (расположенный на сервере) из javascript http-адаптера? Я пробовал много методов, описанных в Интернете, но они, похоже, не работают, потому что они созданы для браузера javascript (я получаю ошибки, такие как XMLHttpRequest, не определены или activeObject не определен).Чтение файла локального сервера .json с адаптером java-скрипта mobileFirst

, например, я использовал это, но он не работает:

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 (файл)); , чтобы возвращаемый объект возвращался как JSON, а не как текст – papakias

+0

Как мы можем получить файл, если он находится внутри самого развертывания адаптера? – edwin

0

Для тех, кто заинтересован в использовании Java.

Одна вещь, которую вы можете сделать, это создать Javascript-адаптер, который будет использовать Java-код. Его довольно просто настроить.

Сначала создайте Javascript-адаптер.

Затем создайте класс Java под папкой server/lib. Я создал класс ReadJSON.java под пакетом com.sample.customcode.

Внутри 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"; 
    } 
} 

Внутри вашего яваскрипт адаптера вы можете использовать методы Java, как показано ниже:

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

} 

Надеется, что это помогает.

+0

Мой ответ - использование Java. –

+0

Благодарим вас за ценную помощь. Я надеялся, что это можно сделать только с помощью адаптера javascript ... Очень полезный ответ тем не менее – papakias

Смежные вопросы