html5 / javascript.Failed在使用indexedDB时插入数据

时间:2016-04-23 08:41:23

标签: javascript html5 indexeddb

这是我的代码:

from ll in (from l in db_Obj.VWrmz_HospitalCorrection
 select hospitalName = l.HOSPITAL_NAME).ToList()
 select ll.Substring(0, ll.IndexOf("--"))

插入数据后,我使用函数get()从indexedDB中获取数据,但是我没能得到它,有什么问题?谢谢!

getInitialState: function(){
  return {
    value:'' //for empty text value
  }
}

单击另一个按钮获取数据后该功能正常工作。但是我无法获取数据。我已将newuser(用户名:1​​密码:1)添加到表user.But我无法获取数据。为什么?谢谢你的答案。

1 个答案:

答案 0 :(得分:1)

您的代码确实工作,但对于给定的用户名只有一次:在将记录成功添加到数据库之后,它仍然存在(这是首先使用IndexedDB的重点) ,因此后续尝试执行set()会导致addrequest对象发生失败事件。这从未显示在您的代码中,因为您还没有为所述请求定义onerror处理程序。

替换......

addrequest.onsuccess = function(event) {
    alert("Success");
};

...与......

addrequest.onerror = function(event) {
        if (console && console.log) { console.log("add op: Fail\n"); }
};
addrequest.onsuccess = function(event) {
    if (console && console.log) { console.log("add op: Success\n"); }
};

...并且看到它发生了(我已经冒昧用控制台输出取代警报。在浏览器窗口中按ctrl-j打开控制台。)

在Chrome 50上测试。

<强> 更新

更改get功能,如下所示:

而不是......

objectStore.get(username.value);
if (password.value == event.target.result.password)
    alert("Success“);
else
    alert("Failed");

...写...

var getrequest = objectStore.get(newuser.username);
getrequest.onerror = function(event) {
        if (console && console.log) { console.log("get op: Fail\n"); }
};
getrequest.onsuccess = function(event) {
    if (console && console.log) { console.log("get op: Success\n"); }
};

......它会起作用。