我的代碼是基於谷歌代碼的示例: https://developers.google.com/maps/articles/phpsqlinfo_v3 並且工作正常。谷歌地圖downloadUrl不返回200
我需要將以前的'gid'(整數)字段更改爲'id'(字符串)以保存到數據庫並用於在地圖上顯示新的標記符號。
奇怪的是,構建在調用addrow.php文件的代碼中的url是可以的。當我用alert(url)捕獲這個字符串時,我手動使用這個字符串,新的數據被添加到數據庫中。
在我的腳本,調用似乎失敗(responseCode == 200 & & data.length < = 1),因爲沒有數據寫入到數據庫,並從「else從句」警報顯示爲短彈出。
下面是我在項目中使用的代碼(將數據從一個形式保存):
//save new marker to Postgis-database and add new markerwithlabel on the fly
function saveData(){
var gender = escape(document.getElementById("gender").value);
var hoehe = InZahl(document.getElementById("hoehe").value);
var breite = InZahl(document.getElementById("breite").value);
var id = escape(document.getElementById("id").value);
var vital = document.getElementById("vital").value;
var typ = document.getElementById("typ").value;
var ein_mehr = document.getElementById("ein_mehr").value;
var st_durchm = document.getElementById("st_durchm").value;
var frucht = document.getElementById("frucht").value;
var anmerk = document.getElementById("anmerk").value;
var latlng = marker.getPosition();
var url = "./mapdata/addrow.php?gender=" + gender +
"&hoehe=" + hoehe + "&lat=" + latlng.lat() + "&lng=" + latlng.lng() +
"&breite=" + breite + "&id=" + id + "&typ=" + typ + "&ein_mehr=" +ein_mehr + "&st_durchm=" + st_durchm +
"&frucht=" + frucht +
"&vital=" + vital + "&anmerk=" + anmerk;
downloadUrl(url, function (data, responseCode) {
if (responseCode == 200 && data.length <=1) {
infowindow.close();
marker.setDraggable(false);
marker.setIcon('./images/mm_purple.png');
marker.labelContent = id;
marker.setMap(map);
downloadUrl("./mapdata/getxml_get_last.php", function (data1) {
var xml = parseXml(data1);
var ms = xml.documentElement.getElementsByTagName("m");
var gid = ms[0].getAttribute("gid");
var html_n = "<div id='InfoWindow'><p style='font-weight:bold;'>" + id + "</p> \n\<p>Höhe:" + hoehe + " Breite: "+ breite +
"<br />\n\Typ: "+typ+" Stämme: "+ein_mehr+" St-Durchm: "+ st_durchm + "<br />\n\Vitalität: "+vital+" Fruchtbehang: "+frucht+
"<p/>\n\<p style='text-align:right;'><a href='sm_juniperus.php?operation=ssearch&ResetFilter=0&SearchField=gid&FilterType=%3D&FilterText="+ gid +
"' target='_blank'> Daten editieren </a></p></div>";
infowindow.setContent(html_n);
bindInfoWindow(marker, map, infowindow, html_n);
(function(i, marker, gid) {
var origIcon = marker.getIcon();
new LongPress(marker, 1000);
google.maps.event.addListener(marker, 'longpress', function(e) {
marker.setDraggable(true);
marker.setIcon(mmcross);
});
google.maps.event.addListener(marker, 'dragend', function(){
updatePosition(marker, gid);
marker.setIcon(origIcon);
});
})(i,marker,gid);
//add new marker to markerCluster-Array and to markerArray
markerCluster.addMarker(marker,false);
markerArray.push(marker);
i++;
}); // End add new marker
}
else {
alert("Your data couldn't be saved!");
}
}); // End downloadUrl
}; // END saveData()
正如我所說的,我的代碼工作正常,但之後經過3個晚上來解決這個問題,我認爲這會請時間尋求幫助。 如果有人有一個想法,錯誤在哪裏,我會apreciate任何提示。
我承認,從現在開始,我沒有想到第二個條件'data.length <= 1'。但是,將數據添加到數據庫的php腳本不會返回任何字符串,除非發生錯誤。所以這將滿足上述條件。我測試了代碼沒有第二個條件(只有'esponseCode == 200'),但行爲仍然是相同的。 – geom
Firebug告訴我,'downloadUrl(url,function,data,responseCode)'-call不返回200(並且沒有任何內容插入到數據庫中),這非常奇怪,當我在瀏覽器中插入GET字符串時手動將數據插入數據庫中? – geom
由於您在瀏覽器中顯式調用了數據庫,而不是通過腳本,數據將不會存儲在數據庫中。返回的錯誤代碼是什麼? – adjuremods