2014-10-10 2 views
0

마커를 클릭하면 listview에서 마커와 관련된 데이터를 추출하기 위해 mysql 쿼리에서 마커 ID를 사용하려는 Google 맵/마커 애플리케이션이 있습니다. .mysql 쿼리에서 javascript 변수를 사용하여 listview를 채우십시오.

변수는 마커를 클릭 할 때 할당되며 ajax를 사용하여 mysql 쿼리에 사용할 변수에 대한 값을 PHP 파일로 전송합니다.

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(); 

내가 거기에 오류가 없지만 목록보기가 비어 응용 프로그램을 실행.

SQL에서 아약스 코드와 where 절을 제거하면 코드가 해당 테이블의 모든 값을 반환하므로 db 연결 및 listview에 대한 출력과 관련하여 작동합니다. 아약스에서 전달되는 변수가 잘못되거나 코드를 잘못 호출해야합니다.

모든 조언을 크게 듣습니다. 고마워요

+0

'시를 te' (첫 번째 예제에서)이지만 PHP에서는'site_id'를 검색하고 있습니다. getoffers()에서'getoffer.php' *에 다시 올리는 이유와'site' 또는'site_id'가없는 이유를 확신 할 수 없습니다. 아마도'getoffers() '의 매개 변수로'data' 만 원할 것입니다. –

답변

0

어떤 이유로 든 성공 함수에서 별도의 아약스 요청을하고 있습니다. @ 폴 해결 문제가 언급 한 바와 같이

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

또한, 귀하의 게시물 데이터 키가 PHP, 하나의 변화와 일치하지 않습니다 성공의 함수는 이미 단순히 두 번째 아약스 요청을 제거, 전달 된 데이터를해야합니다 로 아약스의 데이터 :

data: { site_id: site_id}, 

OR을 site 키 사용하도록 PHP 변경 :

라는 이름의 값을 게시하는
$site = $_POST['site']; 
+0

및 Paul Roub. 나에게 고쳐 준 신사 감사합니다 :) 나는 아약스를 두 번 부르고 있다는 것을 깨닫지 못했습니다. 매우 감사. – DanBeard

관련 문제