Не могу записать данные, которые я получаю из онлайн-файла.js в локальный файл. титан

Я новичок в этом и хочу, чтобы мое приложение получало его данные из онлайн-файла.Js. Это дает мне ошибку. Это мой код,

var xhr = Titanium.Network.createHTTPClient();
xhr.open("GET","http://rstandaert.createandlearn.eu/mobile_db.js");
xhr.onload = function(){
  // check status of connection to server
statusCode = xhr.status;
    //check the response code returned
    if(statusCode == 200)
    {
        var doc = this.responseText;
//write data from downloaded text file to local text file
        var f = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory,'mobile_db.js');
        f.write(doc);
    }

    };
xhr.send();
//-----------------------------------------------------------------------
//---------------------local file read---------------------------------------
var f = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, 'mobile_db.js');


// read the file into contents var
//var contents = f.read();

// print out contents of file 
//Ti.API.info('contents = ' + contents.text);

//-----------------------------------------------------------------------
//--------------------------end of file read--------------------------
//var content2 = f.read();
Ti.include('mobile_db.js');


//var together = new Array();

//for ( i = 0; i < niveauArray.length; i++){

    var togetherh = Titanium.UI.createLabel({

    text : niveauArray[0].niveau_title,
    font : {
        fontSize : 24,
        fontFamily : 'Helvetica Neue',
        fontWeight : 'bold'
    },
    color : 'black',
    top : '10',
    width : '100%',
    textAlign : 'center',
    height : 'auto',
    left : 'auto',
    touchEnabled : false

});

var together = Titanium.UI.createLabel({

    text : niveauArray[0].niveau_id + '  ' + niveauArray[0].niveau_desc,
    font : {
        fontSize : 12,
        fontFamily : 'Helvetica Neue'
    },
    color : 'black',
    top : '50',
    width : '85%',
    textAlign : 'left',
    height : 'auto',
    left : 18,
    touchEnabled : false

});

//}

//var viewqq = Ti.UI.createView();

var viewqq = Ti.UI.createView({
 // backgroundColor:'#336699',
  borderRadius: 10,
  top: 10,
  height: 2000,
  width: 'auto'
});

//viewqq.add(lblTitle);
//viewqq.add(together);
//viewqq.add(togetherh);

Ti.UI.currentWindow.add(viewqq);



var scrollView = Ti.UI.createScrollView({
  contentWidth: 'auto',
  contentHeight: 'auto',
  showVerticalScrollIndicator: true,
  showHorizontalScrollIndicator: false,
  height: '100%',
  width: '100%'
});


scrollView.add(viewqq);
scrollView.add(together);
scrollView.add(togetherh);
Ti.UI.currentWindow.add(scrollView);

Ti.UI.currentWindow.add(viewqq);

Когда я открываю приложение и открываю таблицу (та, которая должна быть заполнена текстом, извлеченным из онлайн-файла.js), она просто остается пустой.

Я буду получать ошибки, такие как:

[ERROR][dalvikvm( 1016)] Could not find class 'ti.modules.titanium.ui.widget.searchview.TiUISearchView', referenced from method ti.modules.titanium.ui.widget.TiUITableView.processProperties

and

[ERROR][InputDispatcher(   62)] channel '40796bd0 com.Innovisionsolutions.com/com.Innovisionsolutions.com.MboAppPdhActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
[ERROR][InputDispatcher(   62)] channel '40796bd0 com.Innovisionsolutions.com/com.Innovisionsolutions.com.MboAppPdhActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
[INFO][WindowManager(   62)] WIN DEATH: Window{40796bd0 com.Innovisionsolutions.com/com.Innovisionsolutions.com.MboAppPdhActivity paused=true}
[INFO][WindowManager(   62)] WIN DEATH: Window{407ea478 com.Innovisionsolutions.com/org.appcelerator.titanium.TiActivity paused=false}
[ERROR][InputDispatcher(   62)] Received spurious receive callback for unknown input channel.  fd=165, events=0x8

and

[ERROR][TiFastDev(  952)] (KrollRuntimeThread) [4971,3410852] Broken pipe
[ERROR][TiFastDev(  952)] java.net.SocketException: Broken pipe
[ERROR][TiFastDev(  952)]   at org.apache.harmony.luni.platform.OSNetworkSystem.write(Native Method)
[ERROR][TiFastDev(  952)]   at dalvik.system.BlockGuard$WrappedNetworkSystem.write(BlockGuard.java:284)
[ERROR][TiFastDev(  952)]   at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:472)
[ERROR][TiFastDev(  952)]   at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:48)
[ERROR][TiFastDev(  952)]   at org.appcelerator.kroll.common.TiFastDev$Session.sendTokens(TiFastDev.java:484)
[ERROR][TiFastDev(  952)]   at org.appcelerator.kroll.common.TiFastDev.openInputStream(TiFastDev.java:212)
[ERROR][TiFastDev(  952)]   at org.appcelerator.kroll.util.KrollAssetHelper.readAsset(KrollAssetHelper.java:53)
[ERROR][TiFastDev(  952)]   at org.appcelerator.kroll.runtime.v8.V8Object.nativeCallProperty(Native Method)
[ERROR][TiFastDev(  952)]   at org.appcelerator.kroll.runtime.v8.V8Object.callProperty(V8Object.java:69)
[ERROR][TiFastDev(  952)]   at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1106)
[ERROR][TiFastDev(  952)]   at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:316)
[ERROR][TiFastDev(  952)]   at org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:100)
[ERROR][TiFastDev(  952)]   at ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:408)
[ERROR][TiFastDev(  952)]   at android.os.Handler.dispatchMessage(Handler.java:95)
[ERROR][TiFastDev(  952)]   at android.os.Looper.loop(Looper.java:130)
[ERROR][TiFastDev(  952)]   at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)
[ERROR][AssetsModule(  952)] Failed to load resource.
[WARN][System.err(  952)] java.lang.NullPointerException
[WARN][System.err(  952)]   at org.appcelerator.kroll.util.KrollAssetHelper.readAsset(KrollAssetHelper.java:55)
[WARN][System.err(  952)]   at org.appcelerator.kroll.runtime.v8.V8Object.nativeCallProperty(Native Method)
[WARN][System.err(  952)]   at org.appcelerator.kroll.runtime.v8.V8Object.callProperty(V8Object.java:69)
[WARN][System.err(  952)]   at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1106)
[WARN][System.err(  952)]   at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:316)
[WARN][System.err(  952)]   at org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:100)
[WARN][System.err(  952)]   at ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:408)
[WARN][System.err(  952)]   at android.os.Handler.dispatchMessage(Handler.java:95)
[WARN][System.err(  952)]   at android.os.Looper.loop(Looper.java:130)
[WARN][System.err(  952)]   at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112)
[ERROR][V8Exception(  952)] Exception occurred at ti:/window.js:158: Uncaught Error: Failed to load resource, Java exception was thrown.

Может кто-нибудь мне помочь:/?

2 ответа

Решение

Вы можете проверить объект файловой системы, что, если этот файл существует или нет....

var f = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, 'mobile_db.js');
if(f.exists()){
   f.deleteFile();
}

тогда, конечно, вам нужно использовать путь, а не просто использовать имя файла..

лайк...

Ti.include(f.nativePath);

и нет необходимости создавать 2 разных объекта для файловой системы. Вы можете использовать то же самое, чтобы написать также......

var xhr = Titanium.Network.createHTTPClient();
xhr.open("GET","http://rstandaert.createandlearn.eu/mobile_db.js");
xhr.onload = function(){
  // check status of connection to server
statusCode = xhr.status;
    //check the response code returned
    if(statusCode == 200)
    {
        var doc = this.responseText;
//write data from downloaded text file to local text file
        f.write(doc);
    }

    };
xhr.send();

Просто замени

Ti.include('mobile_db.js');

с

Ti.include(f.nativePath);
Другие вопросы по тегам