Php 将googlemap位置添加到sql数据库后使用javascript重定向
我对javascript非常陌生(好吧,我只花了两天时间使用它!)。我想在我的网站上做的一件事是允许用户在谷歌地图上添加一个标记。在过去的几天里,我一直在阅读googlemaps API,并使用了其中一个教程()并根据自己的需要对其进行了编辑。标记的纬度和经度使用javascript传递到SQL数据库。当我检查数据库时,我可以看到已经添加了标记,这很好,但是无法从用户端知道它是否成功。当我单击“提交”按钮时,数据将被传递到数据库中,但我希望随后重定向到另一个页面,或显示一条消息,表明它已成功 代码是:Php 将googlemap位置添加到sql数据库后使用javascript重定向,php,javascript,html,sql,google-maps,Php,Javascript,Html,Sql,Google Maps,我对javascript非常陌生(好吧,我只花了两天时间使用它!)。我想在我的网站上做的一件事是允许用户在谷歌地图上添加一个标记。在过去的几天里,我一直在阅读googlemaps API,并使用了其中一个教程()并根据自己的需要对其进行了编辑。标记的纬度和经度使用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>
var标记;
函数初始化(){
var latlng=新的google.maps.latlng(37.4419,-122.1419);
变量选项={
缩放:13,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var map=new google.maps.map(document.getElementById(“map_canvas”),选项);
google.maps.event.addListener(映射,“单击”,函数(事件){
marker=新的google.maps.marker({
位置:event.latLng,
地图:地图
});
});
}
函数saveData(){
var latlng=marker.getPosition();
var url=“phpsqlinfo_addrow.php?lng=“+latlng.lng()+”&lat=“+latlng.lat()”;
下载url(url、函数(数据、响应代码){
如果(responseCode==200&&data.length如果成功添加了标记(在phpsqlinfo_addrow.php中),则应该返回一个成功代码,如下所示:
然后在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!');
}
}
};
1) 你的行尾少了一个分号
window.navigate('index.html')
因此,将其更改为:
window.navigate("index.html");
注意添加了分号
2) 请改用此选项,因为此选项适用于所有浏览器:
window.location.href = '...';
无论如何,要做的第一件事是检查您的if语句是否正在实际执行。因此,请将某些内容打印到浏览器,而不是重定向到另一页。如果没有打印任何内容,则您知道您的if语句甚至没有执行。然后,您可以做的是检查需要执行if语句的变量。因此,y在测试if语句并查看条件是否为真之前,您可以将数据变量打印到浏览器中。在您的情况下,data.length需要在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;
}
我认为分号在这种情况下是不必要的。它们不是表达式终止符,它们是表达式分隔符。最后,如果这不起作用,您的if语句将不会执行,因此web浏览器实际上不会将您导航到所需的位置-index.html。我还建议您在修复基本错误后执行什么操作如果所有其他操作都失败,ors就是要确保您的sql查询实际工作。在执行if语句之前……在javascript中……将数据变量打印到浏览器中,以便您可以查看其中的内容……并实际检查data.length是否小于1,因为这是允许执行if语句的唯一方法,否则您知道原因不知道。也许你可以使用他用来展示它如何工作的downloadUrl
功能
if(mysql_query("INSERT INTO .....")){
//Success
echo 1;
} else{
//Failed
echo 2;
}