解析存储在localstorage中的json - 错误NS_ERROR_DOM_BAD_URI

时间:2015-09-29 22:58:48

标签: javascript json html5 cordova local-storage

我已经阅读了很多帖子而没有成功。我正在开发一个字符串化的简单set / get localstorage,如下面的link所示。

不幸的是,我总是遇到这个错误:

  

请求失败:错误,NS_ERROR_DOM_BAD_URI:访问受限制的URI   拒绝

这是我正在使用的一个小节(仅用于我的测试):

var id_expert = "1";
var testjson = "js/testjson.js"; 
$.getJSON(testjson)
          .done(function( data ) {

//////// STORE ///////////
                    window.localStorage.setItem("id_expert_selected", id_expert);
                    var list = 'questions_'+id_expert;
    window.localStorage.setItem(list,JSON.stringify(data));  

////////// RETRIEVE //////////////                  
                  var id_exp = window.localStorage.getItem('id_expert_selected');
    var list_answ = window.localStorage.getItem('questions_'+id_expert);
    var test = JSON.parse(list_answ) || {}; 

$.getJSON( test )
  .done(function( data ) { <---------- I'm not able to got it.
... bla bla bla...

在sniplet中,我存储/检索json字符串,而没有解析成功。 我确定json是好的,因为当我使用它而没有localstorage时,我得到了解析。

有任何线索吗?

编辑:

即使使用此结果我也得到了相同的结果:

$.getJSON( list_answ )
      .done(function( data ) { <---------- I'm not able to got it.
    ... bla bla bla...

我也尝试在Firefox配置中更改一个标志(一些安全性的东西),但错误仍然存​​在。 在真正的Android设备上,在调试中,我读了另一种错误描述:

  

文件:///storage/emulated/0/Android/data/com.intel.html5tools.apppreview/cac.../previews/MyApp/1/%7B%22username%22:%22myusername%22%22pwd% 22:%22mypwd%22%7D   净:: ERR_FILE_NOT_FOUND

感谢MegaAppBear我解决了:

//// STORE JSON /////

window.localStorage.setItem("id_expert_selected", id_expert);
                    var list = 'questions_'+id_expert;
    window.localStorage.setItem(list,JSON.stringify(data)); 

////检索JSON /////

var id_expert = window.localStorage.getItem('id_expert_selected');
    var list_data = window.localStorage.getItem('questions_'+id_expert),
      def = $.Deferred();

    if (!list_data) {
        def = $.getJSON('js/test.json', function(data) {
            /// save data using localStorage.setItem
        });
    }else{
        list_data = JSON.parse(list_data);
        def.resolve();
    }

    def.done(function() {
var expert_name = document.getElementById('expert_name');
                expert_name.textContent = list_data.NameExpert;
..... and so on .......

1 个答案:

答案 0 :(得分:1)

我不确定你在这里尝试做什么。

var test = JSON.parse(list_answ) || {}; // This returns an object

$.getJSON( test ); // this expects a uri