如何最好地将 mysql 数据实现为一行 javascript 代码?

Posted

技术标签:

【中文标题】如何最好地将 mysql 数据实现为一行 javascript 代码?【英文标题】:How best do I implement mysql data into a line of javascript code? 【发布时间】:2011-10-24 13:52:17 【问题描述】:

我正在为 Google 地图修改一些 javascript,以便从我的数据库中检索不同的 pin 信息。如果我只用 php 来做这件事,它会是这样的:

<?php while($row = mysql_fetch_assoc($query))
$title = $row['title']; $desc = $row['desc']; echo 'This '.$title .' and this '. $desc .';?>

如果数据库中有 5 行,则将有 5 行包含 5 个不同的标题和描述。 但是我有这行javascript,我想在一个while循环中:

map.addMarkerByLatLng(37.8685, -1.5108, "Sanatario de Terburculosos", createInfo("title goes here",""));

我如何编写它以使 javascript 处于 php while 循环中,或者我如何执行 php while 循环的 javascript 等效项,以便我可以检索多行 lang,lat 信息,每行都在其自己的 javascript 代码中,例如上面?

谢谢。

【问题讨论】:

【参考方案1】:

结合你提供的两个代码示例:

<?php
$pinTpl = 'map.addMarkerByLatLng( %s , %s , "%s" , createInfo( "%s" , "" ) );';
while( $row = mysql_fetch_assoc( $query ) )
  echo sprintf( $pinTpl ,
         $row['lat'] ,   # Where 'lat' is the field name for the latitude in DB
         $row['long'] ,  # Where 'long' is the longitude field name in DB
         $row['title'] , # The title
         $row['desc']    # The description
  )."\n";                # A newline, for readability

?>

【讨论】:

如果您开始使用这样的代码,您将面临失败。您最好执行echo 'var='.json_encode($data).';' 之类的操作并访问该变量。 @ilia choly:我不同意,但我对你的推理很感兴趣。是什么让您认为这是“为失败做准备”? 因为您使用 php 生成 javascript。这是非常骇人听闻的。您至少可以有一个单独的 js 文件来生成和加载所有必需的变量作为使用 json_encode 创建的对象。最后,与迭代对象相比,您生成的代码非常多余。 @ilia choly:但这很简单,用最少的返工来回答问题,不会在流程中添加 AJAX 调用,并为 OP 提供了开发更复杂系统的垫脚石(并使用更复杂的系统来做到这一点)。我明白你在说什么,但我仍然不同意你的论点。【参考方案2】:

ajax.php

<?php
    $obj = array();
    while($row = mysql_fetch_assoc($query))
        $obj[] = new array(
            "title" => $row["title"],
            "desc"  => $row["desc"],
            "lat"   => $row["lat"],
            "lon"   => $row["lon"]
        );
    
    echo json_encode($obj);
?>

jquery ajax

$.getJSON("ajax.php",function(data)
    for(var i=0;i<data.length;i++)
        map.addMarkerByLatLng(
            data[i].lon, 
            data[i].lat, 
            data[i].description, 
            createInfo(data[i].title,""));
    
);

【讨论】:

以上是关于如何最好地将 mysql 数据实现为一行 javascript 代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何最好地将 DbType 转换为 System.Type?

如何最好地将字符串表示形式转换为 DbType?

如何最好地将 ClientRect / DomRect 转换为普通对象

如何最好地将 CSS3 过渡设置为无?

如何在 Swift 中最好地将对象组织成月份和年份?

如何最好地将用 LAMP 制作的项目转移到 WAMP 而不破坏它?