所以我目前遇到的问题是我正在尝试使用ajax调用将信息发送到php页面以在SQL数据库中创建一个条目。
如果我在代码中有代码。 (所以它不在一个函数中,只是调用页面加载)。
这是导入的内容:
<script type="text/javascript" language="javascript" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>
<link rel="stylesheet" href="jquery.mobile-1.3.0.css" />
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=visualization"></script>
<script type="text/javascript">
var pos = "(44.18974214877667,-79.63154019848633)";
var place = "test";
var check = "on";
var priv = "yes";
$.ajax({ type:"POST",
url:"backMap/locationCreation.php",
data: { name: place, loc: pos, check: check, privacy: priv },
success: function(data) { $("#awesomet").html(data);},
error: function(xhr, textStatus, thrownError, data) {
alert("Error: " + thrownError); }
});
</script>
在页面加载时调用它时,它将正确运行并将信息输入数据库。问题是我希望在调用按钮时发生这种情况,以便用户输入信息。
<button onClick="sendCreationRequest()" />Submit</button>
<script type="text/javascript">
function sendCreationRequest() {
var place = $("#place").val();
var pos = targetted.getPosition();
var check = $("#checker").val();
var priv = $("#privOp").val();
$("#awesomet").html("GOT HERE.");
$.ajax({ type:"POST",
url:"backMap/locationCreation.php",
data: { name: place, loc: pos, check: check, privacy: priv },
success: function(data) { $("#awesomet").html(data);},
error: function(xhr, textStatus, thrownError, data) {
alert("Error: " + thrownError); }
});
}
</script>
所以Awesomet div将改为“GOT HERE”。按下按钮时应激活该功能,以便进入该功能。我也对所有变量都有警报,它们是正确的。
单击该按钮时,这是控制台中出现的内容:
CordovaLog - https://maps.gstatic.com/cat_js/intl/en_ca/mapfiles/api-3/13/4/%7Bmain,visualization%7D.js: Line 12 : Uncaught TypeError: Cannot call method 'lat' of undefined
Web Console - Uncaught TypeError: Cannot call method 'lat' of undefined:12.
我到处寻找一些我称之为的地方,但我找不到它。
我不明白为什么它会在页面加载调用中起作用,以及为什么它不能在函数调用中起作用。
编辑:目标是谷歌地图标记。调用get位置时调用。它返回就好了。我已经发出警报(pos);在代码中,当按下按钮时,警报会提供正确的字符串。
编辑:好的,所以我改变了:var pos = targetted.getPosition();
为...
var pos = "(44.18974214877667,-79.63154019848633)";
现在功能调用完美无缺!但是我不明白为什么。它们在变量中得到相同的数字。有什么想法吗?
答案 0 :(得分:0)
回答我自己的问题。
感谢bystwn22和Mansimran Singh。
问题出现在targetted.getPosition();
目标是来自Google地图的标记。这是getPosition()函数返回的东西。当使用警报()将其打印出来时,它看起来是一样的。
事实证明它实际上不是一个字符串,而是某种json语句。
修复原来是:
var pos = ""+targetted.getPosition();
简单但有效。
感谢大家的投入!