Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
$.ajax和IBM Worklight';s JSONstore_Json_Ibm Mobilefirst_Jsonstore - Fatal编程技术网

$.ajax和IBM Worklight';s JSONstore

$.ajax和IBM Worklight';s JSONstore,json,ibm-mobilefirst,jsonstore,Json,Ibm Mobilefirst,Jsonstore,我试图存储$.ajax()函数返回的json数据,但遇到了问题。下面是我所做的调用(我知道它正确地返回了我的JSON数据,我已经记录了它(由于个人原因删除了url) 然后我使用worklight初始化我的JSONStore: //Setup JSON store var collectionName = 'people'; //Object that defines all the collections var collections = {}; //Object that defines

我试图存储$.ajax()函数返回的json数据,但遇到了问题。下面是我所做的调用(我知道它正确地返回了我的JSON数据,我已经记录了它(由于个人原因删除了url)

然后我使用worklight初始化我的JSONStore:

//Setup JSON store
var collectionName = 'people';

//Object that defines all the collections
var collections = {};

//Object that defines the 'people' collection
collections[collectionName] = {};

WL.JSONStore.init(collections);
现在我的问题就在这里。我想将我从ajax调用返回的JSON数据添加到我的JSONStore中。因此我尝试了这一点(getJSONData是上述ajax调用的包装器):


但是,当我打印集合时,其中没有存储任何内容,当我打印WL.JSONStore.get(collectionName).count时,也没有返回任何内容。我如何才能正确添加返回给我的数据?

您在上面进行的调用是异步的。因此,它可能不会返回您认为是的内容

您必须:

  • 使用延期等待返回
  • 将jsonstoreadd命令放在ajax调用的success函数中
  • 使用sync标志调用ajax:

  • 您在上面进行的调用是异步的,因此它可能不会返回您认为是的结果

    您必须:

  • 使用延期等待返回
  • 将jsonstoreadd命令放在ajax调用的success函数中
  • 使用sync标志调用ajax:

  • 您在上面进行的调用是异步的,因此它可能不会返回您认为是的结果

    您必须:

  • 使用延期等待返回
  • 将jsonstoreadd命令放在ajax调用的success函数中
  • 使用sync标志调用ajax:

  • 您在上面进行的调用是异步的,因此它可能不会返回您认为是的结果

    您必须:

  • 使用延期等待返回
  • 将jsonstoreadd命令放在ajax调用的success函数中
  • 使用sync标志调用ajax:

  • AJAX调用和JSONStore API都是异步API,这意味着您要么使用它们返回的延迟API,要么传递一个成功回调,以便能够在进入下一步之前等待它完成

    持久存储未打开的原因是,您正在调用init,而不是等待它完成,而是在未完成init的情况下立即调用add,这就是为什么它说存储尚未初始化

    您可能会这样做:

    $.ajax({
      type: "GET",
      url: **url that returns json data**
      contentType: "application/json; charset=utf-8",
      dataType: "json", 
      success: function(msg) {
          //Setup JSON store
          var collectionName = 'people';
    
          //Object that defines all the collections
          var collections = {};
    
          //Object that defines the 'people' collection
          collections[collectionName] = {};
    
          WL.JSONStore.init(collections)
    
          .then(function(res){
             WL.JSONStore.get(collectionName).add(getJSONData());
          });
    
          return msg;
      },          
      error: function(e){
        WL.Logger.log(e);
      }
    });
    
    (注意我如何更改成功回调以使用AJAX调用的结果。)

    编辑:以下是有关Javascript中延迟和承诺的更多信息,以供参考:


    JSONStore在每次API调用时都会返回一个承诺,这样您就可以使用这些承诺来处理回调,而不必每次都传递成功和失败回调。

    AJAX调用和JSONStore API都是异步API,这意味着您要么使用它们返回的延迟API,要么传递成功回调以使其成为able在进行下一步之前,请等待它完成

    持久存储未打开的原因是,您正在调用init,而不是等待它完成,而是在未完成init的情况下立即调用add,这就是为什么它说存储尚未初始化

    您可能会这样做:

    $.ajax({
      type: "GET",
      url: **url that returns json data**
      contentType: "application/json; charset=utf-8",
      dataType: "json", 
      success: function(msg) {
          //Setup JSON store
          var collectionName = 'people';
    
          //Object that defines all the collections
          var collections = {};
    
          //Object that defines the 'people' collection
          collections[collectionName] = {};
    
          WL.JSONStore.init(collections)
    
          .then(function(res){
             WL.JSONStore.get(collectionName).add(getJSONData());
          });
    
          return msg;
      },          
      error: function(e){
        WL.Logger.log(e);
      }
    });
    
    (注意我如何更改成功回调以使用AJAX调用的结果。)

    编辑:以下是有关Javascript中延迟和承诺的更多信息,以供参考:


    JSONStore在每次API调用时都会返回一个承诺,这样您就可以使用这些承诺来处理回调,而不必每次都传递成功和失败回调。

    AJAX调用和JSONStore API都是异步API,这意味着您要么使用它们返回的延迟API,要么传递成功回调以使其成为able在进行下一步之前,请等待它完成

    持久存储未打开的原因是,您正在调用init,而不是等待它完成,而是在未完成init的情况下立即调用add,这就是为什么它说存储尚未初始化

    您可能会这样做:

    $.ajax({
      type: "GET",
      url: **url that returns json data**
      contentType: "application/json; charset=utf-8",
      dataType: "json", 
      success: function(msg) {
          //Setup JSON store
          var collectionName = 'people';
    
          //Object that defines all the collections
          var collections = {};
    
          //Object that defines the 'people' collection
          collections[collectionName] = {};
    
          WL.JSONStore.init(collections)
    
          .then(function(res){
             WL.JSONStore.get(collectionName).add(getJSONData());
          });
    
          return msg;
      },          
      error: function(e){
        WL.Logger.log(e);
      }
    });
    
    (注意我如何更改成功回调以使用AJAX调用的结果。)

    编辑:以下是有关Javascript中延迟和承诺的更多信息,以供参考:


    JSONStore在每次API调用时都会返回一个承诺,这样您就可以使用这些承诺来处理回调,而不必每次都传递成功和失败回调。

    AJAX调用和JSONStore API都是异步API,这意味着您要么使用它们返回的延迟API,要么传递成功回调以使其成为able在进行下一步之前,请等待它完成

    持久存储未打开的原因是,您正在调用init,而不是等待它完成,而是在未完成init的情况下立即调用add,这就是为什么它说存储尚未初始化

    您可能会这样做:

    $.ajax({
      type: "GET",
      url: **url that returns json data**
      contentType: "application/json; charset=utf-8",
      dataType: "json", 
      success: function(msg) {
          //Setup JSON store
          var collectionName = 'people';
    
          //Object that defines all the collections
          var collections = {};
    
          //Object that defines the 'people' collection
          collections[collectionName] = {};
    
          WL.JSONStore.init(collections)
    
          .then(function(res){
             WL.JSONStore.get(collectionName).add(getJSONData());
          });
    
          return msg;
      },          
      error: function(e){
        WL.Logger.log(e);
      }
    });
    
    (注意我如何更改成功回调以使用AJAX调用的结果。)

    编辑:以下是有关Javascript中延迟和承诺的更多信息,以供参考:


    JSONStore在每次API调用中都会返回一个承诺,这样您就可以使用这些承诺来处理回调,而不必每次都传递成功和失败回调。

    谢谢。我尝试将add命令放入success函数中,但现在我得到了:[wl.JSONStore]{“src”:“store”,“err”:-50,“msg”:“PERSISTENT\u store\u NOT\u OPEN”,“col”:“people”,“usr”:“jsonstore”,“doc”:{},“res”:{}}。不过我已经初始化了存储,所以我不明白为什么会发生这种情况。我本来打算在这里回复一条评论,但是我的答案太长了,所以我把它放在一个单独的答案中。基本上,你调用init时,它好像是同步的,但它是异步的,所以当你