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.

これを呼んでいる場所をあちこち探しましたが、見つかりませんでした。

ページ読み込み呼び出しで機能する理由と、関数呼び出しで機能しない理由がわかりません。

編集: ターゲットは Google マップ マーカーです。位置を取得するための呼び出しが呼び出されたとき。ちゃんと返ってきます。私はアラート(pos)を入れました。ボタンが押されたときにアラートが正しい文字列を表示します。

編集:わかりましたので、次を変更しました:

var pos = targetted.getPosition();

に...

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

関数呼び出しが完全に機能するようになりました。しかし、私はその理由を理解していません。それらは変数内で同じ数値を取得しています。何か案は?

4

1 に答える 1

0

自分の質問に答えるだけです。

bystwn22 と Mansimran Singh に感謝します。

問題は targetted.getPosition(); にあったようです。

targetted は、Google マップのマーカーです。getPosition() 関数は何かを返します。alert() を使用して出力すると、同じように見えました。

実際には文字列ではなく、ある種の json ステートメントであることがわかりました。

修正は次のようになりました。

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

シンプルですが、うまくいきます。

ご意見ありがとうございます。

于 2013-06-23T20:40:07.443 に答える