AJAX调用工作,但不是从Javascript函数

时间:2013-06-23 19:48:17

标签: php javascript html ajax

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

现在功能调用完美无缺!但是我不明白为什么。它们在变量中得到相同的数字。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题。

感谢bystwn22和Mansimran Singh。

问题出现在targetted.getPosition();

目标是来自Google地图的标记。这是getPosition()函数返回的东西。当使用警报()将其打印出来时,它看起来是一样的。

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

修复原来是:

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

简单但有效。

感谢大家的投入!