Использование переменной javascript в запросе mysql и заполнение списка

У меня есть приложение карты / маркера Google, в котором я хочу использовать идентификатор маркера в запросе mysql для извлечения данных, относящихся к маркеру, в виде списка при нажатии на маркер.

Переменная назначается при щелчке маркера, и я использую ajax для передачи значения в php-файл для переменной, которая будет использоваться в запросе mysql.

JS

function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(map, marker);
var site_id = marker.get("id");
$.ajax({
url: 'getoffer.php',
type: "POST",
data: { site: site_id},
success: getoffers
});
});
}

В случае успеха я вызвал функцию getoffers, которая заполняет представление списка значениями базы данных.

var output1 = '';
function getoffers() {
$.post( "getoffer.php?getjson", function( data ) {
var data = JSON.parse(data);
console.log(data);
$.each(data, function(index, value){
output1 += '<li data-id='+ value.offer_id +'><a href="#"">' + value.offer_title + '</a></li>';
});
$('#offerlist').html(output1).listview().listview('refresh');
});
}

PHP

<?php
$site = $_POST['site_id'];
require("dbconnect.php");
try {
$DBH = new PDO("mysql:host=$server;dbname=$database;charset=utf8", $username, $password,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
}
catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}

$STH = $DBH->prepare("SELECT * FROM Offer WHERE site_id='$site'");
$STH->execute();
$arr = $STH->fetchAll();
echo json_encode($arr);
die();

Когда я запускаю приложение, ошибок нет, но список пуст.

Когда я удаляю код ajax и предложение where из sql, код возвращает все значения в этой таблице, поэтому я знаю, что он работает в отношении соединения с БД и вывода в listview. Я, должно быть, ошибаюсь с передачей переменной в ajax или если я вызываю код неправильно.

Любые советы высоко ценится. Спасибо

0

Решение

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

function getoffers(data) {
//$.post( "getoffer.php?getjson", function( data ) {
var data = JSON.parse(data);
console.log(data);
$.each(data, function(index, value){
output1 += '<li data-id='+ value.offer_id +'><a href="#"">' + value.offer_title + '</a></li>';
});
$('#offerlist').html(output1).listview().listview('refresh');
//});
}

Кроме того, как заметил @Paul Roub, ваш ключ данных поста не совпадает с вашим php, либо измените данные в вашем ajax на:

data: { site_id: site_id},

ИЛИ ЖЕ измените свой PHP, чтобы использовать ключ site:

$site = $_POST['site'];
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]