2012-04-16 7 views
0

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

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

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'の部分にあるようだが、多くの検索ではそれ以上のことはできない。

ご協力いただきましてありがとうございます。

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

そしてそれは同様に正常に追加された場合は、あなたのAJAX呼び出しにあなたがチェックすることができます:あなたは何をすべき

答えて

0

1)あなたは、あなたの行の末尾にセミコロンを逃している

window.navigate('index.html') 

に変更してください。

window.navigate("index.html"); 

通知セミコロンが追加されました。

2)これは、すべてのブラウザで動作として、代わりにこれを使用します。

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

とにかくまず最初に行うには、あなたのif文が実際に実行されていることを確認することです。他のページにリダイレクトするのではなく、ブラウザに何かを印刷してください。何も表示されない場合、if文が実行されていないことがわかります。それでは、if文の実行を必要とする変数を調べることができます。 if文をテストして条件が真であるかどうかを見る前に、データ変数をブラウザに出力することができます。あなたのケースでは、data.lengthは< 1である必要があります。前にデータ変数を出力して、それが1未満であることを確認してください。そうでなければ、if文が実行されていない理由を知っています。あなたのウェブページがリダイレクトされない理由Terwanerikの答えに続き

+1

その場合、セミコロンは必要ないと思います。それらは発現ターミネーターではなく、発現セパレーターである。 –

+0

そして最後にそれがうまくいかない場合、if文が実行されていないので、Webブラウザは実際にあなたの望む場所、index.htmlにあなたを案内していません。 他のすべてが失敗した場合に基本的なエラーを修正した後に行うことをお勧めします.Sqlクエリが実際に機能していることを確認することです。 javascriptでif文を実行する前に、データ変数をブラウザに出力して、whats inside ...を見ることができます。if文がif文であるため、data.lengthが1未満かどうかを実際に確認します。さもなければそれがなぜdoesntか知っている実行することを許可した。 – Pavan

0

はマーカーが正常に追加された場合はそのように(phpsqlinfo_addrow.phpに)成功コードを返すですそう:

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!'); 
     } 
    } 
}; 
+0

たぶん、あなたが表示するために、彼が使用し 'downloadUrl'機能を使用することができますどのように動作するのですか? –

0

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; 
} 
+0

ありがとう、それは完全に働いた。 – NickF

関連する問題