Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将php变量合并到javascript中_Php_Javascript - Fatal编程技术网

将php变量合并到javascript中

将php变量合并到javascript中,php,javascript,Php,Javascript,我想知道如何将php代码中的变量添加到javascript代码中 例如,我的查询结果为vertreklat、vertreklong、aankomstlat、aankomstlong 我的javascript代码: echo "<script src='http://maps.googleapis.com/maps/api/js?sensor=false'></script> <script> /* ***** Start CustomMarker *****

我想知道如何将php代码中的变量添加到javascript代码中

例如,我的查询结果为vertreklat、vertreklong、aankomstlat、aankomstlong

我的javascript代码:

echo "<script src='http://maps.googleapis.com/maps/api/js?sensor=false'></script>
<script>
/* ***** Start CustomMarker ***** */
function CustomMarker(latlng, map, marker_id, hovercard) {
  this.latlng_ = latlng;
  this.marker_id = marker_id;
  this.hovercard_content = hovercard;
  this.setMap(map);
}

CustomMarker.prototype = new google.maps.OverlayView();

CustomMarker.prototype.draw = function() {
  var me = this;
  var div = this.div_;
  if (!div) {
    div = this.div_ = document.createElement('DIV'); 
        div.id=me.marker_id;
    var panes = this.getPanes();
    panes.overlayImage.appendChild(div);
  }
  var point = this.getProjection().fromLatLngToDivPixel(this.latlng_);
  if (point) {
      div.className = 'map-marker show-hovercard';
      div.style.left = (point.x-6) + 'px';
      div.style.top = (point.y-23) + 'px';
      $(div).attr('data-hovercard-content', me.hovercard_content);

  }
};

CustomMarker.prototype.remove = function() {
  if (this.div_) {
    this.div_.parentNode.removeChild(this.div_);
    this.div_ = null;
  }
};

CustomMarker.prototype.getPosition = function() {
 return this.latlng_;
};
/* ***** End CustomMarker ***** */

function initialize() {
  var markers = [];
  var bounds = new google.maps.LatLngBounds();
  var myOptions = {
    center: new google.maps.LatLng(20, 20), 
    zoom: 2,
    mapTypeId: google.maps.MapTypeId.TERRAIN,
    panControl: false,
    streetViewControl: false,
    zoomControlOptions: {
        style: google.maps.ZoomControlStyle.SMALL
    }
  };
  var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
        pos = new google.maps.LatLng(vertreklat, vertreklong);
    overlay = new CustomMarker(pos, map, 'marker_KMSP', 'some name');
    overlay.setMap(map);
        bounds.extend(pos);
            pos = new google.maps.LatLng(aankomstlat, aankomstlong);
    overlay = new CustomMarker(pos, map, 'marker_RJAA', 'some name');
    overlay.setMap(map);
        bounds.extend(pos);

      var flightPath = new google.maps.Polyline({path: [new   
google.maps.LatLng(vertreklat, vertreklong),new google.maps.LatLng(aankomstlat,   
aankomstlong)], strokeColor: '#ffffff', strokeOpacity: 0.7, strokeWeight: 2, geodesic: 
true });
      flightPath.setMap(map);



  map.fitBounds(bounds);google.maps.event.addListener(map, 'zoom_changed', 
function() {
      if(map.getZoom()<2) {
        map.setZoom(2); 
        }
    });
}
$(document).ready(function() {
    initialize();
});
</script>";
但我对如何完成这项任务感到困惑

试试这个:

var flightPath = new google.maps.Polyline({path: [new   
google.maps.LatLng(".$row['vertreklat'].",".$row['vertreklong']."),new google.maps.LatLng(".$row['aankomstlat'].",".$row['aankomstlong'].")], strokeColor: '#ffffff', strokeOpacity: 0.7, strokeWeight: 2, geodesic: 
true });

由于启动了echo wqith双引号,因此可以再次使用它们来断开字符串并用点
连接。顺便问一下,对于如此长的输出块,您的PHP变量是否应该没有
$

,而不是
echo
使用
?>
返回文本输出。然后在需要回显变量的地方插入小块

?>
<script src='http://maps.googleapis.com/maps/api/js?sensor=false'></script>
<script>
/* ***** Start CustomMarker ***** */
function CustomMarker(latlng, map, marker_id, hovercard) {
  this.latlng_ = latlng;
  this.marker_id = marker_id;
  this.hovercard_content = hovercard;
  this.setMap(map);
}

CustomMarker.prototype = new google.maps.OverlayView();

CustomMarker.prototype.draw = function() {
  var me = this;
  var div = this.div_;
  if (!div) {
    div = this.div_ = document.createElement('DIV'); 
        div.id=me.marker_id;
    var panes = this.getPanes();
    panes.overlayImage.appendChild(div);
  }
  var point = this.getProjection().fromLatLngToDivPixel(this.latlng_);
  if (point) {
      div.className = 'map-marker show-hovercard';
      div.style.left = (point.x-6) + 'px';
      div.style.top = (point.y-23) + 'px';
      $(div).attr('data-hovercard-content', me.hovercard_content);

  }
};

CustomMarker.prototype.remove = function() {
  if (this.div_) {
    this.div_.parentNode.removeChild(this.div_);
    this.div_ = null;
  }
};

CustomMarker.prototype.getPosition = function() {
 return this.latlng_;
};
/* ***** End CustomMarker ***** */

function initialize() {
  var markers = [];
  var bounds = new google.maps.LatLngBounds();
  var myOptions = {
    center: new google.maps.LatLng(20, 20), 
    zoom: 2,
    mapTypeId: google.maps.MapTypeId.TERRAIN,
    panControl: false,
    streetViewControl: false,
    zoomControlOptions: {
        style: google.maps.ZoomControlStyle.SMALL
    }
  };
  var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
        pos = new google.maps.LatLng(<?php echo $vertreklat ?>, <?php echo $vertreklong ?>);
    overlay = new CustomMarker(pos, map, 'marker_KMSP', 'some name');
    overlay.setMap(map);
        bounds.extend(pos);
            pos = new google.maps.LatLng(<?php echo $aankomstlat ?>, <?php echo $aankomstlong ?>);
    overlay = new CustomMarker(pos, map, 'marker_RJAA', 'some name');
    overlay.setMap(map);
        bounds.extend(pos);

      var flightPath = new google.maps.Polyline({path: [new   
google.maps.LatLng(vertreklat, vertreklong),new google.maps.LatLng(<?php echo $aankomstlat ?>, <?php echo $aankomstlong ?>)], strokeColor: '#ffffff', strokeOpacity: 0.7, strokeWeight: 2, geodesic: 
true });
      flightPath.setMap(map);



  map.fitBounds(bounds);google.maps.event.addListener(map, 'zoom_changed', 
function() {
      if(map.getZoom()<2) {
        map.setZoom(2); 
        }
    });
}
$(document).ready(function() {
    initialize();
});
</script>
?>
/*****启动自定义标记*****/
功能自定义标记(latlng、地图、标记id、悬停卡){
this.latlng=latlng;
this.marker\u id=marker\u id;
this.hovercard_content=hovercard;
这个.setMap(map);
}
CustomMarker.prototype=new google.maps.overlyview();
CustomMarker.prototype.draw=函数(){
var me=这个;
var div=this.div_2;;
如果(!div){
div=this.div=document.createElement('div');
div.id=me.marker\u id;
var panes=this.getPanes();
窗格。覆盖图像。追加子对象(div);
}
var point=this.getProjection().fromLatLngToDivPixel(this.latlng_u2;);
如果(点){
div.className='map marker show hovercard';
div.style.left=(点x-6)+“px”;
div.style.top=(点y-23)+“px”;
$(div.attr('data-hovercard-content',me.hovercard\u content);
}
};
CustomMarker.prototype.remove=函数(){
如果(此.div){
this.div\u.parentNode.removeChild(this.div\u);
this.div=null;
}
};
CustomMarker.prototype.getPosition=函数(){
将此文件退还给我;
};
/*******结束自定义标记*******/
函数初始化(){
var标记=[];
var bounds=new google.maps.LatLngBounds();
变量myOptions={
中心:新google.maps.LatLng(20,20),
缩放:2,
mapTypeId:google.maps.mapTypeId.TERRAIN,
泛控制:错误,
街景控制:错误,
ZoomControl选项:{
样式:google.maps.ZoomControlStyle.SMALL
}
};
var map=new google.maps.map(document.getElementById('map_canvas'),myOptions);
pos=新的google.maps.LatLng(,);
覆盖=新的自定义标记(位置、地图、“标记”\u KMSP、“某些名称”);
覆盖.setMap(map);
边界扩展(pos);
pos=新的google.maps.LatLng(,);
覆盖=新的自定义标记(位置、地图、“标记”和“某个名称”);
覆盖.setMap(map);
边界扩展(pos);
var flightPath=new google.maps.Polyline({path:[new])
google.maps.LatLng(vertreklat,vertreklong),新的google.maps.LatLng(,),strokeColor:“#ffffff”,strokeOpacity:0.7,strokeWeight:2,测地线:
真});
flightPath.setMap(map);
map.fitBounds(bounds);google.maps.event.addListener(map'zoom_changed',
函数(){

如果(map.getZoom()您可以使用短回显打开标记:

<script>
var foo = <?=$foo?>;
console.log(foo);
</script>

var foo=;
console.log(foo);

或者使用AJAX

如果在执行一个大型
echo
语句时,服务器端代码中有值,则可以将PHP值包含在
echo
ed的字符串中:因此,您试图从JavaScript分配PHP变量,然后在以后的JavaScript中使用它们?行不通(被询问了一百万次。查找客户端/服务器端代码以获取信息)。只需将其全部保存在JavaScript中;不要让PHP参与其中。除非您的第二个代码块是PHP(如果是,则它已严重损坏!)在这种情况下,是的,只是回显值。这似乎不起作用。当我在重新加载页面后查看html代码时,我得到:var flightPath=new google.maps.Polyline({path:[new google.maps.LatLng(vertreklat,vertreklong),new google.maps.LatLng(aankomstlat,aankomstlong)],strokeColor:“#ffffff”,strokeOpacity:0.7,strokeWeight:2,测地线:true}”);**表示粗体,但我意识到不能使用粗体代码。我还尝试使用$,这破坏了代码。我也尝试过这样做。$row['vertreklat'],“$row['vertreklong']和{$aankomstlat},{$aankomstlong}。但这两种方法都产生了(,)在html中..我验证了当我运行我的查询时应该显示的事实数据…有…@DaniëlCronk,如果你只回显
$row['vertreklong']
你得到了什么?Sergio-这很奇怪,我真的什么都没有得到。但是当我把我的代码放入Toad并运行它时,它的值就在那里…我用?>从php块中取出它,但它似乎仍然不正确。当我在刷新页面后查看html代码时,我得到(,)变量名是否正确?在对另一个答案的评论中,您提到了
$row['vertreklong']
,但您的问题表明它们只是
$vertreklong
(除了您遗漏了
$
)。这是什么?我的sql代码将lh.longitudeCIMAL作为vertreklong。因此,当我“回显”这个时,我会假设它是$row不是吗?
<script>
var foo = <?=$foo?>;
console.log(foo);
</script>