2012-02-01 52 views
1

我可以使用Web SQL存储在iPhone的Web SQL存储在iPhone

目前我下面的代码导致错误

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
    <head> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
    <title>Web Storage</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
    <script type="text/javascript" language="javascript" charset="utf-8"> 

    var sessionDB = {} 
    sessionDB.webdb = {}; 
    sessionDB.webdb.db = null; 

    function init() { 
    console.log("Loading"); 
    sessionDB.webdb.open(); 
    sessionDB.webdb.createTable(); 
    sessionDB.webdb.addRecord("_session_id=9943d50d1b8fdc3794137f5446e94a6e"); 
    sessionDB.webdb.getSession(); 
    } 

    sessionDB.webdb.open = function() { 
     var dbSize = 1 * 1024 * 1024; 
     sessionDB.webdb.db = openDatabase("sessionDB", "1.0", "Session Database", dbSize); 
    } 

    sessionDB.webdb.createTable = function() { 
     var db = sessionDB.webdb.db; 
     db.transaction(function(tx) { 
     // make id auto Increment 
     tx.executeSql("CREATE TABLE IF NOT EXISTS sessions(ID INTEGER PRIMARY KEY ASC, session_id TEXT, added_on DATETIME)", [],successCallbacks,errorCallbacks); 
     }); 
    } 

    sessionDB.webdb.addRecord = function(session_id) { 
     var db = sessionDB.webdb.db; 
     db.transaction(function(tx){ 
      var addedOn = new Date(); 
      tx.executeSql("INSERT INTO sessions(session_id, added_on) VALUES (?,?)", 
       [session_id,addedOn],successCallbacks,errorCallbacks); 

     }); 
     } 

    successCallbacks = function(transaction,sqlResult) { 
     console.log("SUCCESS :)"); 
    } 

    errorCallbacks = function(transaction,error) { 
     console.log(error.message + " -- " + error.code); 
     console.log("ERROR !!!"); 
    } 

    sessionDB.webdb.getSession = function() { 
     var db = sessionDB.webdb.db; 
     db.transaction(function(tx) { 
     tx.executeSql("SELECT session_id FROM sessions limit 1 ;", [], resultSets); 
     }); 
    } 

    resultSets = function (transaction,sqlResult) { 
    $("#resultSet").text(sqlResult.rows.item(0).session_id) 
    } 

    </script> 
</head> 
<body onload="init();"> 
    <h1> WEB STORAGE EXAMPE </h1> 
    <div id="resultSet"> </div> 

</body> 

错误消息,指出 “无权” 与错误代码5

这个想法是存储SESSION_ID在会话表,我不能接近localStorage的因为this

的应用程序是不是原生的应用程序与服务器传统的客户端 - 服务器应用程序上面的HTML片段返回到iPhone的浏览器(Safari浏览器)

注:以上代码做工精细在桌面浏览器网具有SQL功能

感谢 Viren

+0

看看这个:http://sixrevisions.com/web-development/html5-iphone-app/。我从未在iOS上制作过使用过的HTML5,但本教程看起来很有帮助。 – 2012-02-01 06:33:33

+0

我有同样的问题,但我设法使它随机工作....不知道为什么,但它似乎只有当你在跳板上做一个快捷方式,并从那里运行它作为一个Web应用程序的时候工作。试试这个,告诉我它是否改变了什么 – TecHunter 2012-02-15 10:01:06

回答

1

显然,iOS上的Safari有一些处理数据库的问题。如果您在跳板上创建快捷方式以作为WebApp运行,它将起作用。

+1

至少在iOS 7.0.4上,显然仍然是相同的问题。悲伤:-( – spa 2014-09-11 16:03:21