0

私は JavaScript を初めて使用します (2 日しか使っていません!)。私のサイトでやりたいことの 1 つは、ユーザーが Google マップにマーカーを追加できるようにすることです。ここ数日 googlemaps API を読んでいて、チュートリアルの 1 つ ( https://developers.google.com/maps/articles/phpsqlinfo_v3 ) を使用して、必要に応じて編集しました。マーカーの緯度と経度は、javascript を使用して SQL データベースに渡されます。データベースを確認すると、マーカーが追加されていることがわかります。これは素晴らしいことですが、ユーザー側からは成功したかどうかを知る方法がありません。「送信」ボタンをクリックすると、データがデータベースに渡されますが、別のページにリダイレクトするか、成功したというメッセージを表示したいと思います。

コードは次のとおりです。

var marker;

function initialize() {
  var latlng = new google.maps.LatLng(37.4419, -122.1419);
  var options = {
    zoom: 13,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var map = new google.maps.Map(document.getElementById("map_canvas"), options);

google.maps.event.addListener(map, "click", function(event) {
    marker = new google.maps.Marker({
      position: event.latLng,
      map: map
    });
});
}

  function saveData() {
  var latlng = marker.getPosition();

  var url = "phpsqlinfo_addrow.php?lng=" + latlng.lng() + "&lat=" + latlng.lat();

  downloadUrl(url, function(data, responseCode) {
       if (responseCode == 200 && data.length <= 1) {
     window.navigate('index.html')
    }
  });
}

function downloadUrl(url, callback) {
  var request = window.ActiveXObject ?
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest;

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      request.onreadystatechange = doNothing;
      callback(request.responseText, request.status);
    }
  };

  request.open('GET', url, true);
  request.send(null);
}

function doNothing() {}
</script>

<link rel="stylesheet" type="text/css" href="style.css"/>
<body onload="initialize()">
<div id="container">
<div id="map_canvas" style="width: 938px; height: 600px">
</div>
</div>
<div id="footer">
<table>
<tr><td><input type='button' value='Save Marker' onclick='saveData()'/></td></tr>
</div>
</body>
</html>

そこから不要なものをいくつか削除しました。問題は「window.navigate」の部分にあるようですが、多くの検索を行ってもそれ以上解決できませんでした。

どんな助けでも大歓迎です!

4

3 に答える 3

0

次のように、マーカーが(phpsqlinfo_addrow.phpで)正常に追加された場合は、成功コードを返す必要があります。

if(mysql_query("INSERT INTO .....")){
    //Success
    echo 1;
} else{
    //Failed
    echo 2;
}

そして、ajax呼び出しで、次のように正常に追加されたかどうかを確認できます。

request.onreadystatechange = function() {
    if (request.readyState == 4) {
        request.onreadystatechange = doNothing;

        var response = request.responseText;

        if(response == 1){
            //success
            callback(request.responseText, request.status);
        } else{
            //failed
            alert('something went wrong!');
        }
    }
};
于 2012-04-16T14:56:52.810 に答える
0

Terwanerikの答えに続いて:

downloadUrl(url, function(data, responseCode) {
    if (responseCode == 200 && data == "1") {
        //success
        window.navigate('index.html')
    } else{
        //failed
        alert('something went wrong!');
    }
  }
});

彼の言ったことと一致するようにphpsqlinfo_addrow.phpファイルを変更する必要があります。

if(mysql_query("INSERT INTO .....")){
  //Success
  echo 1;
} else{
  //Failed
  echo 2;
}
于 2012-04-16T15:07:11.800 に答える
0

1) 行末にセミコロンがありません

window.navigate('index.html')

したがって、次のように変更します。

window.navigate("index.html"); 

セミコロンが追加されていることに注意してください。

2) これはすべてのブラウザーで機能するため、代わりにこれを使用します。

window.location.href = '...';

とにかく、最初に行うことは、if ステートメントが実際に実行されていることを確認することです。したがって、別のページにリダイレクトするのではなく、ブラウザーに何かを出力します。何も出力されない場合は、if ステートメントが実行されていないことがわかります。次に、if ステートメントの実行が必要な変数を確認します。そのため、if ステートメントをテストして条件が true かどうかを確認する前に、データ変数をブラウザーに出力できます。あなたの場合、data.lengthは<1である必要があります...そのため、前にデータ変数を出力して、それが1未満であることを確認してください...そうでない場合は、ifステートメントが実行されていない理由を知っているため、 Web ページがリダイレクトされない理由

于 2012-04-16T15:02:43.183 に答える