我有一個谷歌地圖/標記應用程序,我想使用的標記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