我有一个谷歌地图/标记应用程序,我想使用的标记ID在一个MySQL查询,以提取与在ListView标记数据点击标记时。使用MySQL查询JavaScript变量和填充的ListView
该变量是单击标记时分配的,我正在使用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();
当我运行的应用程序没有错误,但ListView控件是空白。
当我从sql中删除ajax代码和where子句时,代码将返回该表中的所有值,所以我知道它适用于db连接和输出到listview。我必须错误地通过ajax传递的变量,或者如果我不正确地调用代码。
任何意见非常感谢。谢谢
要发布的名为值'SI te'(在第一个例子中),但在PHP中,您正在检索'site_id'。不知道为什么你要在'getoffers()'中再次发布'getoffer.php' * *,并且没有任何'site'或'site_id'。你可能只需要'data'作为'getoffers()'的参数。 – 2014-10-10 15:13:00