我使用Phonegap + Jquery定位Andriod 4.12构建了一个html页面。
我的业务要求是使用cordova.js的相机API拍照,然后将拍摄的照片发布到ASMX网络服务。
问题:当我添加对Cordova.js的引用并运行应用程序时,我在LogCat中收到错误“Uncaught ReferenceError:$ is not defined”但是如果我删除对cordova.js的引用一切正常并且我是能够将数据发布到Web服务。
我附上我的代码供参考。
<!DOCTYPE html>
<html>
<head>
<title>Capture Photo</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
<script type="text/javascript" charset="utf-8" src="jquery.js"></script>
<script type="text/javascript">
var varType;
var varUrl;
var varData;
var varContentType;
var varDataType;
var varProcessData;
function InsertDetails() {
alert('Inserting Details');
varType = "POST";
varUrl = "http://mobile.comp.com/service/userservice.asmx/InsertDetails";
varContentType = "application/json; charset=utf-8";
varDataType = "json";
varProcessData = true;
var uname = document.getElementById('txtname');
var pwd = document.getElementById('txtpwd');
CallService(uname.value, pwd.value);
return true;
}
//Generic function to call AXMX/WCF Service
function CallService(u, p) {
$.ajax({ type: varType, url: varUrl, data: '{"username":"' + u + '","password":"' + p + '"}', contentType: varContentType, dataType: varDataType, processdata: varProcessData, success: function (msg) { ServiceSucceeded(msg); }, error: ServiceFailed });
}
function ServiceSucceeded(result) {
var myObject = eval('(' + result.d + ')');
alert(myObject);
}
function ServiceFailed(result) {
alert('Service call failed: ' + result.status + '' + result.statusText);
varType = null; varUrl = null; varData = null; varContentType = null; varDataType = null; varProcessData = null;
}
</script>
</head>
<body>
<input type=text id=txtname value=John />
<input type=text id=txtpwd value=Doe />
<input type="button" id="btnSearch" onclick="InsertDetails();" style="cursor: pointer;
margin-top: 8px; vertical-align: top" value="Insert Details" />
<button id=btn1>Capture Photo</button>
</body>
</html>
请帮帮我。
答案 0 :(得分:3)
对类似问题进行一些搜索会显示一些可能的答案。
1)在本地而不是从CDN加载jQuery。你似乎已经这样做了,但我会为其他有类似问题的人提起它。
can't find jQuery's $ on asus tablet with android 3.2
2)告诉jQuery允许跨域请求。请查看以下链接中的“$ .support.cors”和“$ .mobile.allowCrossDomainPages”部分。
https://demos.jquerymobile.com/1.2.0/docs/pages/phonegap.html
3)告诉jQuery好玩。可能是cordova.js正在使用另一个想要使用$的JS库。因为你首先加载cordova,所以另一个JS库在jQuery之前声明了$。
答案 1 :(得分:1)
感谢尼克的帮助。第3个链接有帮助
最后我的代码工作了
我添加了以下代码,这对我来说是神奇的。
jQuery.noConflict();
之后,JQuery得到了认可。确保遵循javascripts的正确顺序,否则代码将无效。
我引用js文件的顺序: