したがって、私が現在抱えている問題は、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.
これを呼んでいる場所をあちこち探しましたが、見つかりませんでした。
ページ読み込み呼び出しで機能する理由と、関数呼び出しで機能しない理由がわかりません。
編集: ターゲットは Google マップ マーカーです。位置を取得するための呼び出しが呼び出されたとき。ちゃんと返ってきます。私はアラート(pos)を入れました。ボタンが押されたときにアラートが正しい文字列を表示します。
編集:わかりましたので、次を変更しました:
var pos = targetted.getPosition();
に...
var pos = "(44.18974214877667,-79.63154019848633)";
関数呼び出しが完全に機能するようになりました。しかし、私はその理由を理解していません。それらは変数内で同じ数値を取得しています。何か案は?