2014-10-10 56 views
0

我有一個谷歌地圖/標記應用程序,我想使用的標記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傳遞的變量,或者如果我不正確地調用代碼。

任何意見非常感謝。謝謝

+0

要發佈的名爲值'SI te'(在第一個例子中),但在PHP中,您正在檢索'site_id'。不知道爲什麼你要在'getoffers()'中再次發佈'getoffer.php' * *,並且沒有任何'site'或'site_id'。你可能只需要'data'作爲'getoffers()'的參數。 – 2014-10-10 15:13:00

回答

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'); 
    //}); 
} 

此外,由@保羅Roub注意到,您的文章數據密鑰不與你的php,要麼改變匹配在阿賈克斯的數據:

data: { site_id: site_id}, 

改變你的PHP使用密鑰site

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

和Paul Roub。謝謝你們幫我解決了這個問題:)我沒有意識到我是兩次打電話給阿賈克斯的。非常感激。 – DanBeard 2014-10-10 15:27:13