2013-06-29 4 views
1

Ошибка в том, что db не удалось открыть и $ не определено, не удалось загрузить ресурсы (j-запрос). Код направлен на получение значений поля ввода (дата, кал) и хранить их в базе данных с использованием индексированной

<!DOCTYPE html> 
<html manifest="manifest.webapp" lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Diab</title> 

    <link rel="stylesheet" href="diab.css"> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0/jquery.min.js"></script> 

    <script type="text/javascript" src="diab1.js"></script> 


</head> 
<body> 
    <input type="date" id="date">Date</input> 
    <input type="number" id="cal">Cal</input> 
    <button id="add" >Add</button> 
</body> 
</html> 



(function() 
{ var db; 
    var openDb=function() 
    { 
     var request=indexedDB.open("diabetore"); 
     request.onsuccess = function() 
     { 
      console.log("DB created succcessfully"); 
      db = request.result; 
      console.log("openDB done!!"); 
     }; 


     request.onerror=function(){ 
      alert("could not open db"); 
     }; 

     request.onupgradeneeded = function() 
     { 


     console.log("openDB.onupgradeneeded function"); 
     var store = db.createObjectStore("diab", {keyPath: "date"}); 
     var dateIndex = store.createIndex("date", "date",{unique: true}); 

      // Populate with initial data. 
      store.put({date: "june 1 2013",cal:70}); 
      store.put({date: "june 2 2013",cal:71}); 
      store.put({date: "june 3 2013",cal:72}); 
      store.put({date: "june 8 2013",cal:73}); 
     }; 
    }; 

    function getObjectStore(store_name,mode) 
    { 
     var tx=db.transaction(store_name,mode); 
     return tx.objectStore(store_name); 
    } 

    function addItems(date,cal) 
    { 
     console.log("addition to db started"); 
     var obj={date:date,cal:cal}; 
     var store=getObjectStore("diab",'readwrite'); 
     var req; 
     try 
     { 
      req=store.add(obj); 
     }catch(e) 
     { 
      if(e.name=='DataCloneError') 
      alert("This engine doesn't know how to clone"); 
      throw(e); 
     } 
     req.onsuccess=function(evt) 
     { 
      console.log("****Insertion in DB successful!!****"); 

     }; 
     req.onerror=function(evt) 
     { 
      console.log("Could not insert into DB"); 
     }; 

    } 

    function addEventListners() 
    { 
     console.log("addEventListeners called..."); 
     $('#add').click(function(evt){ 
      console.log("add..."); 
      var date=$('#date').val(); 
      var cal=$('#cal').val(); 
      if(!date || !cal) 
      { 
       alert("required field missing.."); 
       return; 
      } 
      addItems(date,cal); 
     }); 
    } 

    openDb(); 
    addEventListners(); 


})(); 

ответ

0

Относительно проблемы не в состоянии увидеть БД создается, когда вы открываете базу данных, которую необходимо передать другой параметр с версией базы данных, как:

var request=indexedDB.open("diabetore",1); 

Чтобы увидеть структуру БД на вкладке Ресурсы в Инструментах разработчика Chrome, иногда вы должны обновить страницу.

У вас также будет проблема с вашей функцией addEventListners(), так как ваша анонимная функция запускается до того, как браузер прочитает содержимое HTML, чтобы браузер не знал об элементе «#add», поэтому обработчик события click поскольку этот элемент не создается.

Вы должны поместить свой код внутри "$ (функция() {" или "$ (документ) .ready (функция() {":

$(function() { 
    (function() { 
     var db; 
     var openDb=function() { 
+0

благодарю вас за ваше предложение .... он решил большую часть проблемы ... но новая проблема заключается в том, что я получаю Not Found Error: IDBdatabase Exception8 в функции getObjectStore. Также функция onupgradeneeded никогда не вызывалась ... так что никакого магазина не было создано. легкость –

+0

Вы проверили вкладку Ресурсы в Инструментах разработчика Chrome, если база данных была создана? Событие onupgradededed вызывается только тогда, когда db не существует или версия отличается. –

+0

Да, я проверил его, db не был создан, затем я изменил версию и снова запустил код, он работал нормально, и все остальные последующие операции прошли хорошо. Большое спасибо :) –

0

Вы должны проверить URL сценария в вашем браузере. Тогда вы поймете, что сценарий не существует.

Например, вам необходимо изменить 2.0 на 2.0.0.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

+0

спасибо много ... по крайней мере, запустить скрипт ... но это всего лишь половина проблемы .... я все еще не могу добавить к db .... PLZ смотреть в слушателя событий тоже ..... также предложить любой способ заглянуть в структуру из db .... я в настоящее время использую хром инструменты для разработчиков ... там в вкладке ресурсов нет db было создано ... help. –

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