如何在Object [object HTMLCollection]

时间:2015-11-19 18:33:18

标签: javascript php jquery mysql ajax

您好首先感谢您的帮助朋友。

我想看看他们是否可以帮助我解决这个问题,我在Google数据库中插入谷歌地图的纬度和经度包括一个名为“pathname”的变调夹文本输入,非常适合插入纬度和经度,但是当你插入“pathname”时,我在路径名字段inserccionen“[object HTMLCollection]”的演员表中返回 我想要的是插入该输入的文本或值。

以下是我的代码,看看他们是否可以帮助我,谢谢

Php Code Index.php:

<?php 
      $lat = "18.472848374914534";
      $lng = "-69.92593261718753";
      $pos = $_POST ["pos"];
      $nombre_ruta = $_POST ["nombre_ruta"];
      echo "
      <div id='info' name='info' class='info'>".$pos."</div>
      <div id='seleccion_mapa'></div>
      <input type='text' name='nombre_ruta' id='nombre_ruta' placeholder='ponga aqui, el nombre de la ruta' class='Txt_SELECCIONAR' />
      <input type='submit' id='enviar' name='enviar' value='CREAR RUTA' class='Txt_btn_submit2' value='CREAR RUTA'>
      <br>
      <div id='respuesta'></div>";
      ?>

js脚本Ajax

<script>
    $(document).ready(function(){
      lat = "<?php echo $lat; ?>" ;
      lng = "<?php echo $lng; ?>" ;
      var map;
      function initialize() {
        var myLatlng = new google.maps.LatLng(lat,lng);
        var mapOptions = {
          zoom: 7,
          center: myLatlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        map = new google.maps.Map(document.getElementById("seleccion_mapa"), mapOptions);
        var marker = new google.maps.Marker({
          position: myLatlng,
          draggable:true,
          animation: google.maps.Animation.DROP,
          web:"Localización geográfica!",
          icon: "../../../../assets/img/marker.png"
        });
        google.maps.event.addListener(marker, 'dragend', function(event) {
          var myLatLng = event.latLng;
          lat = myLatLng.lat();
          lng = myLatLng.lng();
          nombre_ruta = myLatLng.nombre_ruta();
          document.getElementByTagId('info').innerHTML = [
          lat,
          lng,
          nombre_ruta
          ].join(', ');
        });
        marker.setMap(map);
      }

      google.maps.event.addDomListener(window, 'load', initialize);
      $("#enviar").click(function() { 
        var url = "../../../controllers/cargar_mapa.php";
        $("#respuesta").html('<img src="../../../../assets/img/loading17.gif" />');
        $.ajax({
         type: "POST",
         url: url,
         data: 'lat=' + lat + '&lng=' + lng + '&nombre_ruta=' + nombre_ruta ,
         success: function(data)
         {
           $("#respuesta").html(data);
         }
       });
      }); 
    });
</script>

和数据库插入代码

<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
include('../../Connections/conexion_mapa_ruta.php');
    $lat=strip_tags(mysqli_real_escape_string($con,$_POST['lat']));
    $lng=strip_tags(mysqli_real_escape_string($con,$_POST['lng']));
    $nombre_ruta=$_POST['nombre_ruta'];
    $pos=$lat.",".$lng;
    mysqli_query($con,"INSERT INTO ruta_transporte (Lat, Lng, Pos, nombre_ruta) values ('$lat','$lng','$pos','$nombre_ruta')");
    echo "<b> Posición guardada: </b>".$nombre_ruta.",".$lat.", ".$lng;
?>

1 个答案:

答案 0 :(得分:0)

在客户端构建POST数据时:

data: 'lat=' + lat + '&lng=' + lng + '&nombre_ruta=' + nombre_ruta

nombre_ruta是一个对象。可能从它设置在这里的时间开始?:

nombre_ruta = myLatLng.nombre_ruta();

我真的不确定该方法的返回方式,您可能需要在浏览器中进行调试才能找到答案。但问题是,无论该变量是什么,它都是一个对象。既然你正在尝试从中构建一个字符串,那么对象的字符串表示就是你所看到的:

  

[object HTMLCollection]

由于您正在构建一串键/值对,并且由于您的服务器端代码需要处理字符串(通过将其插入数据库中的文本列),因此您将前往想要确保在POST该值之前将变量设置为一个简单的字符串值。

该字符串值必须是什么,这取决于您。也许你对象的某些属性? (不确定这有多大可能性,我仍然不清楚为什么Google Maps API会在事件属性上使用nombre_ruta()方法,或者为什么该方法会返回HTMLCollection个对象。您可能可能需要进行更多调试,可能会比问题中提供的内容更多。)