谷歌地图downloadUrl不返回200

时间:2016-02-06 23:04:11

标签: postgresql google-maps

我的代码基于Google代码示例: https://developers.google.com/maps/articles/phpsqlinfo_v3 并且工作正常。

我需要将以前的'gid'(整数)字段更改为'id'(String)以保存到数据库并用于在地图上显示新的带标签的符号。

奇怪的是,在代码中构建的url是调用addrow.php文件的。当我使用alert(url)捕获此字符串,并且我手动使用此字符串时,新数据将添加到数据库中。

在我的脚本中,调用似乎失败(responseCode == 200&& data.length< = 1),因为没有数据写入数据库并显示来自'else-clause'的警报短暂的弹出窗口。

这是我在项目中使用的代码(用于保存表单中的数据):

//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个晚上解决这个问题后,我认为是时候寻求帮助了。 如果有人有想法,错误在哪里,我会提出任何暗示。

1 个答案:

答案 0 :(得分:0)

只是为了确认,你知道你做了

if (responseCode == 200 && data.length <=1) {

你说'如果请求成功并且它返回的数据只有一个字符或者长度不足'?我不确定这是否有意,因为这样if语句中的代码只在响应成功但仅包含1或0个字符时运行。