Получение ошибки: «Не могу найти переменную: $» в мобильном jquery - PullRequest
0 голосов
/ 27 февраля 2012

Сначала пройдите код: -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
   <meta name="viewport" content="width=default-width; user-scalable=no" /> 
   <meta http-equiv="Content-type" content="text/html;charset=utf-8"> 
   <title>Embedded Sql Example</title> 

    <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></ script> 


    <script type="text/javascript" charset="utf-8" src="jquery.min.js"></script>  

<!-- main scripts used in this example --> 
 <script type="text/javascript" charset="utf-8"> 
// global variables 
var db; 
var shortName = 'WebSqlDB'; 
var version = '1.0'; 
var displayName = 'WebSqlDB'; 
var maxSize = 65535; 
// this is called when an error happens in a transaction 
function errorHandler(transaction, error) { 
   alert("Error: "+ error.message + "code: " + error.code); 
} 
// this is called when a successful transaction happens 
function successCallBack() { 
   alert("DEBUGGING: success"); 
} 
function nullHandler(){} 
// called when the application loads 
function onBodyLoad(){ 
// This alert is used to make sure the application is loaded correctly 
alert("DEBUGGING: we are in the onBodyLoad() function"); 
 if (!window.openDatabase) { 

   alert("Databases are not supported in this browser."); 
   return; 
 } 

 db = window.openDatabase(shortName, version, displayName,maxSize); 

 db.transaction(function(tx){ 


   tx.executeSql( 'CREATE TABLE IF NOT EXISTS User(UserId INTEGER NOT NULL PRIMARY KEY, FirstName TEXT NOT NULL, LastName TEXT NOT NULL)', [],nullHandler,errorHandler); 
 },errorHandler,successCallBack); 
} 

function ListDBValues() { 
 if (!window.openDatabase) { 
  alert("Databases are not supported in this browser."); 
  return; 
 } 
  $('#lbUsers').html('');

 db.transaction(function(transaction) { 
   transaction.executeSql('SELECT * FROM User;', [], 
     function(transaction, result) { 
      if (result != null && result.rows != null) { 
        for (var i = 0; i < result.rows.length; i++) { 
          var row = result.rows.item(i); 
          $('#lbUsers').append("<br>" + row.UserId + ". " + row.FirstName+ " " + row.LastName); 
        } 
      } 
     },errorHandler); 
 },errorHandler,nullHandler); 
 return; 
} 

function AddValueToDB() { 
 if (!window.openDatabase) { 
   alert("Databases are not supported in this browser."); 
   return; 
 } 

   db.transaction(function(transaction) { 
   transaction.executeSql('INSERT INTO User(FirstName, LastName) VALUES (?,?)',[$('#txFirstName').val(), $('#txLastName').val()],nullHandler,errorHandler); 
   }); 

 ListDBValues(); 
 return false; 
} 
</script> 
</head> 
<body onload="onBodyLoad()"> 
<h1>WebSQL</h1> 
<input id="txFirstName" type="text" placeholder="FirstName"> 
<input id="txLastName" type="text" placeholder="Last Name"><br> 
<input type="button" value="Add record" onClick="AddValueToDB()"> <br>
<input type="button" value="Refresh" onClick="ListDBValues()"> <br> 
<br> 
<span style="font-weight:bold;">Currently stored values:</span> 
<span id="lbUsers"></span> 
</body> 
</html>

Я работаю над приложением phonegap и создаю его на Android os. Я получаю

"Can't find variable: $ at file:///android_asset/www/dbDemo.html:103"

строка из-за ошибки произошла в 103

 $('#lbUsers').html('');

и

"Can't find variable: $ at file:///android_asset/www/dbDemo.html:131" 

строка из-за ошибки произошла в 131

transaction.executeSql('INSERT INTO User(FirstName, LastName) VALUES (?,?)',[$('#txFirstName').val(), $('#txLastName').val()],nullHandler,errorHandler);  

во время выполнения приведенного выше кода. Помогите мне избавиться от проблемы. Любая помощь будет принята с благодарностью. Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 27 февраля 2012

Похоже, что jQuery не загружается.Я смотрю на ваш код и думаю, что проблема может быть такой же простой, как дополнительный пробел ...

<script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></ script>
<script type="text/javascript" charset="utf-8" src="jquery.min.js"></script>

В закрывающем теге скрипта есть пробел - попробуйте изменить его с </ script>до </script>

0 голосов
/ 17 апреля 2014

Попробуйте поместить тег сценария jquery.min.js перед тегом сценария phonegap-1.4.1.js, как показано ниже.

Похоже, что jQuery не загружается перед использованием.

0 голосов
/ 27 февраля 2012

Вы звоните ListDBValues() в своем разделе head (вторая строка перед закрывающим тегом script). Это вызывает проблему, потому что библиотека jQuery еще не загружена в этот момент, и именно поэтому вы получаете ошибки. Вместо этого попробуйте переместить вызов этой функции в body - вставьте следующее перед закрывающим тегом body:

<script type="text/javascript">
$(document).ready(function() {
    ListDBValues();
});
</script>
0 голосов
/ 27 февраля 2012

попробуйте использовать jQuery('blabla') вместо $('blabla')

...