0

所以我目前遇到的问题是我正在尝试使用 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.

我到处寻找我称之为这个的地方,但我找不到它。

我不明白为什么它可以通过页面加载调用起作用,以及为什么它不能通过函数调用起作用。

编辑: Targetted 是一个谷歌地图标记。当调用 get position 时。它返回就好了。我已经发出警报(pos);在代码中,因此当按下按钮时,警报确实会提供正确的字符串。

编辑:好的,所以我改变了:

var pos = targetted.getPosition();

到...

var pos = "(44.18974214877667,-79.63154019848633)";

函数调用现在完美运行!但是我不明白为什么。他们在变量中得到相同的数字。有任何想法吗?

4

1 回答 1

0

只是为了回答我自己的问题。

感谢 bystwn22 和 Mansimran Singh。

看来问题出在 targetted.getPosition();

targetted 是来自谷歌地图的标记。它的 getPosition() 函数返回一些东西。当使用 alert() 打印出来时,它看起来是一样的。

事实证明,它实际上不是一个字符串,而是某种 json 语句。

修复结果是:

var pos = ""+targetted.getPosition();

简单但有效。

感谢大家的投入!

于 2013-06-23T20:40:07.443 回答