用于弹出窗口内容的JavaScript到PHP

时间:2011-10-17 03:44:37

标签: php javascript mysql ajax popup

我的地图上有许多标记。

我需要帮助将我的Javascript与我的PHP文件连接起来,这样我就可以从数据库中提取相关内容并将其放在弹出窗口的div中。地图和弹出窗口工作正常,打开,但我不知道如何将数据库中的内容插入div #popupcontent。

以下是JavaScript的一部分:

        function showPopup(id, leftbul, topbul){
            map.find(settings.popupSelector).fadeOut(); 
            var boxid = '#' + id + '-box';

            $(boxid).fadeIn();      
            $(settings.popupCloseSelector).click(function(){
            $(this).parent().fadeOut()              
            });
        }

JavaScript / Ajax引用一个单独的HTML文件,其中记录了弹出标记。每个标记/弹出窗口都有以下HTML,在同一文件中一个接一个。在这种情况下,id引用标识为97的地块。

<a href="javascript:void(0)" id="97" class="bullet" style="color: rgb(0,0,0);font-size: 13px;" rel="222-156">97</a> 
<div class="popup" id="97-box" style="top:158px;left:220px;"> 
    <h3>97</h3> 
    <div class="popupcontent"> 
        <p>Insert my database content here </p> 
    </div>
    <a class="close" href="javascript:void(0)">Close</a> 
</div> 

我相信我需要在JavaScript中插入这样的东西,但我没有让它工作。你认为你能在这里帮助我吗?

$.get("popup.php", (id),
function( data ) {
var content = $( data ).find( '#content' );
$( "#popupcontent" ).empty().append( content );
}

这是服务器端PHP文件:

<?php 
$id=$_GET["id"];
// Connects to your Database 
mysql_connect("mysql.url.com", "username", "password") or die(mysql_error()); 
mysql_select_db("database_name") or die(mysql_error()); 
$data = mysql_query("SELECT * FROM inventory WHERE lot_number = '".$id."'";) 
or die(mysql_error()); 
Print "<table border cellpadding=3 font-size:8px width:200px>"; 
while($info = mysql_fetch_array( $data )) 
{ 
Print "<tr>"; 
Print "<th>Lot number:</th> <td>".$info['lot_number'] . "</td></tr> "; 
Print "<th>Sales Status:</th> <td>".$info['lot_status'] . "</td> "; 
Print "<th>Model Built:</th> <td>".$info['model'] . "</td></tr> "; 
Print "<th>Lot Size:</th> <td>".$info['lot_size'] . " </td></tr>"; 
Print "<th>Frontage:</th> <td>".$info['lot_frontage'] . " </td></tr>";
Print "<th>Depth:</th> <td>".$info['lot_depth'] . " </td></tr>";
Print "<th>Premium:</th> <td>".$info['lot_premium'] . " </td></tr>";
Print "<th>Features:</th> <td>".$info['lot_features'] . " </td></tr>";
Print "<th>Restrictions:</th> <td>".$info['lot_restrictions'] . " </td></tr>";
Print "<th>Move-in Date:</th> <td>".$info['lot_move_date'] . " </td></tr>";
} 
Print "</table>"; 
?> 

2 个答案:

答案 0 :(得分:3)

最简单的解决方案是使用jQuery的.load方法。

您需要指定一个将返回html的php文件。将$.get代码替换为以下内容:

    $('.popupcontent').load('popup.php', {id: <your_id_here});

有一点需要注意:由于您在此处将参数对象添加为.load的第二个参数,因此jQuery将使用POST方法;因此,在您的php文件中,您需要从$_GET更改为$_POST

如果您想继续使用GET方法,请将以上代码更改为以下代码:

    $('.popupcontent').load('popup.php?id=id1');

我建议给弹出内容div一个id,而不是在这种情况下的类。您正在处理一个独特的项目。我指的是您当前的HTML,您应该将其更改为以下内容:

    <div class="popup" id="97-box" style="top:158px;left:220px;"> 
        <h3>97</h3> 
        <div id="popupcontent"> 
            <!-- RETURNED TABLE FROM PHP FILE WILL GO HERE --> 
        </div>
        <a class="close" href="javascript:void(0)">Close</a> 
    </div>

如果你打算有一些共享这种行为的弹出窗口,那么你可以做的就是这样做:

    <-- HTML FILE -->
    <div class="popup" id="97-box" style="top:158px;left:220px;"> 
        <h3>97</h3> 
        <div class="popupcontent"> 
            <!-- RETURNED TABLE FROM PHP FILE WILL GO HERE --> 
        </div>
        <a class="close" href="javascript:void(0)">Close</a> 
    </div>

    // javascript file
    $('#97-box .popupcontent').load('popup.php', {id: <your_id_here>});

上述模式允许您使popupcontent成为可由其他弹出窗口使用的泛型类。需要注意的是在jQuery选择器中添加一个不同的选择器。在这种情况下,我建议$('#97-box .popupcontent'),它将仅在具有id:97-box的html元素下选择popupcontent div。在这种情况下,这是您的弹出窗口。

答案 1 :(得分:0)

更新:

好的感谢RYAN我可以解决这个问题。这是解决方案:

//find
        function showPopup(id, leftbul, topbul){
            map.find(settings.popupSelector).fadeOut(); 
            var boxid = '#' + id + '-box';

//open

            $(boxid).fadeIn();
//added this 
            $('.popupcontent').load('popup.php?boxid=' + id);

//close
            $(settings.popupCloseSelector).click(function(){
            $(this).parent().fadeOut()              
            });
        }

这抓住了html中的id。

PHP变量是:

$var = $_GET['boxid'];

我希望这有助于其他人。感谢Ryan对此的帮助。