С помощью приведенного ниже кода я получаю контент, связанный с маркером на карте Google, и отображаю его в контейнере. Теперь проблема в том, что он отлично работает с контентом, который был вставлен в базу данных до новой загрузки страницы. Когда новый контент вставляется в базу данных, контент не отображается до тех пор, пока страница не будет перезагружена. Кто-нибудь знает, как это решить?

google.maps.event.addListener(marker, 'click', function() {

var poslat = marker.getPosition().lat();
var poslng = marker.getPosition().lng();

var posData = {poslat : poslat, poslng: poslng};

      $.ajax({
          type: "POST",
          url: "getcontent.php",
          data: posData,
          success: function(data){ 

              $('.contentslide').slideDown('slow');

              $('.contentslide .container').html(data);

        });
});


<?php
$db_username = 'x';
$db_password = 'x';
$db_name = 'x';
$db_host = 'x';

$mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);

$rs = $mysqli->query("SELECT * FROM locations WHERE lat=$_POST[poslat]");

$row = $rs->fetch_array();

echo $row['type'];
echo "<h1>" . $row['name'] . "</h1>" . "<br>";
echo "<p>" . $row['description'] . "</p>";

$mysqli->close();

?>
1
braunbaer 26 Янв 2015 в 22:52

2 ответа

То, что вы говорите, имеет смысл. Страница загружается тем, что когда-либо было в базе данных. Если вы добавите запись в базу данных и не перезагрузите страницу, вы ее не увидите. Теперь, если вы используете форму для добавления записи, вы можете настроить страницу действия формы на ту же страницу. Таким образом, когда вы публикуете новое значение для размещения в своей базе данных, оно перезагружает эту страницу с этой новой записью, если вы поместите новую запись в базу данных до загрузки страницы. это было бы быстрым решением, но вы все равно перезагрузите страницу. Единственное отличие состоит в том, что вам не нужно нажимать кнопку перезагрузки, потому что это делается при отправке новой записи.

Другой вариант - использовать AJAX для перезагрузки только того, что вы хотите перезагрузить на странице, и это также можно сделать с интервалом.

В основном, если вы просматриваете страницу, а другой пользователь добавляет запись, вы не увидите ее, пока не перезагрузите страницу или если вы не обновите часть своей страницы каждые 5 секунд с помощью ajax.

Это также может означать, что вы загружаете страницу перед вводом значений в базу данных.

Убедитесь, что весь ваш html идет после вашего запроса к базе данных.

0
MadeInDreams 26 Янв 2015 в 23:15
Как бы вы реализовали частичную перезагрузку в моем примере?
 – 
braunbaer
27 Янв 2015 в 00:52

Вы отправляете данные json, поэтому попробуйте использовать json_decode(file_get_contents("php://input") и данные будут доступны через $_POST

0
Diego Vega 26 Янв 2015 в 23:20
Где я должен поместить json_decode(file_get_contents("php://input") ?
 – 
braunbaer
26 Янв 2015 в 23:39
На стороне сервера $data = json_decode(file_get_contents("php://input"),true); $lat = $data['postlat'];
 – 
Diego Vega
26 Янв 2015 в 23:50