#php #javascript #mysql #ajax #popup
#php #javascript #mysql #ajax #всплывающее
Вопрос:
У меня есть карта с многочисленными маркерами на ней.
Мне нужна помощь в подключении моего 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-код, один за другим в том же файле. В этом случае идентификатор ссылается на земельный участок, идентифицированный как 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>";
?>
Комментарии:
1. Я не вижу вопросительного знака во всем тексте.
2. В чем именно заключается ваш вопрос? Мы не можем написать это для вас, поскольку вы не предоставили ровно НИЧЕГО в виде полезных данных о том, что ваш серверный скрипт должен делать для генерации данных для вашего клиентского материала.
3. Ок, очки приняты. Я попытался отредактировать вопрос, чтобы сделать его более значимым. Пожалуйста, дайте мне знать, если вы понимаете, что я ищу. Спасибо
Ответ №1:
Самым простым решением было бы использовать .метод загрузки jQuery.
Вам нужно будет указать, например, php-файл, который будет возвращать html. Замените свой $.get
код следующим:
$('.popupcontent').load('popup.php', {id: <your_id_here});
Здесь следует отметить одну вещь: из-за того, что вы добавляете здесь объект parameters в качестве второго параметра to .load
, jQuery будет использовать метод POST ; поэтому в вашем php-файле вам нужно изменить с $_GET
на $_POST
.
Если вы хотите продолжать использовать метод GET, измените приведенный выше код на следующий:
$('.popupcontent').load('popup.php?id=id1');
В этом случае я бы рекомендовал присвоить элементу содержимого всплывающего окна идентификатор, а не класс. Вы имеете дело с уникальным элементом. Я имею в виду ваш текущий 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')
, который будет выбирать popupcontent div только под html-элементом с id: 97-box. В данном случае это ваше всплывающее окно.
Комментарии:
1. Потрясающе. Большое вам спасибо за ваше время и помощь. Это привело к появлению содержимого. Есть идеи, как правильно ссылаться на идентификатор в верхней части файла PHP? Это не работает: $id = $_GET [«id»];
2. Вы можете добавить объект params в качестве второго аргумента
.load
. Я обновлю свой ответ примером этого.3. Я обязательно поддержу вас как . загрузка сработала .. большое вам спасибо
4. Подождите, я забыл упомянуть одну вещь. Если вы добавите объект в качестве второго параметра
.load
, то jQuery будет использовать метод POST . Поэтому в php вам нужно будет использовать$_POST['id']
.5. Я только что узнал, просматривая Интернет, что если вы хотите использовать метод GET, вместо этого не используйте второй аргумент
.load
. Вместо этого просто передайте параметры в URL-адресе в виде обычной строки запроса, например,.load('popup.php?id=id1');
. Это должно сработать.
Ответ №2:
Обновить:
ХОРОШО, БЛАГОДАРЯ РАЙАНУ Я СМОГ РЕШИТЬ ЭТУ ПРОБЛЕМУ. Вот решение:
//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.
Переменная PHP была:
$var = $_GET['boxid'];
Я надеюсь, что это поможет кому-то еще. Спасибо, Райан, за вашу помощь в этом.