2013-10-27 111 views
0

我正在研究Google地圖應用,但遇到了問題。我使用谷歌地圖API來創建一個地圖,基於我保存在數據庫中的數據庫值。我可以將它們取出並在地圖上顯示多個位置。我現在用的是$ .getJSON函數查詢存儲在哪裏得到的頁面:在Google地圖上顯示來自搜索查詢的結果

$.getJSON("get_markers.php",{ 
     format: "json", 
     dataType: 'json', 
     contentType: "application/json; charset=utf-8"}, 
     function(json) 
     { 
      addMarkers(json); 
      console.log(json); 
     }); 
    } 

的PHP文件:

<?php 
require 'functions/functions.php'; 

$conn = connect_to_db(); 

$response = array(); 
$query = get_post_by_cat('bedrijven', 'ict', $conn); 
foreach ($query as $post) { 

$response[] = array(
    'name' => $post['naam'], 
    'lat' => $post['latitude'], 
    'lng' => $post['longtitude'], 
); 
} 
echo json_encode($response); 

?> 

的一點是,這個偉大的工程。不過,我希望在有人使用搜索欄時它能夠正常工作。所以我創建了它,並且我可以完美地獲取數據和JSON數據。但地圖甚至沒有顯示。我鑽進了我的控制檯,跑過狀態碼304,經過一番調查後發現,狀態碼304意味着我對我使用的API做了太多的請求。我嘗試這樣做:

$.getJSON("search.php",{ 
    format: "json", 
    dataType: 'json', 
    contentType: "application/json; charset=utf-8"}, 
    function(json) 
    { 
     addMarkers(json); 
     console.log(json); 
    }); 
} 

搜索PHP文件:

<?php 

require 'functions/functions.php'; 

$conn = connect_to_db(); 

if(isset($_POST['submit'])) 
{ 
    $search = $_POST['query']; 
    echo $search; 

    $query = get_post_by_cat('bedrijven', $search, $conn); 

    if ($query) 
    { 
     foreach ($query as $post) 
     { 
      ?> <h1 id="test"><?php echo $post['naam'] ?></h1> 
        <p><?php echo $post['plaats'] ?></p> 
        <p><?php echo $post['categorie'] ?></p> 
        <?php 
     } 


    } 
    else 
    { 
     echo 'error'; 
    } 

} 


?> 

這給了我304個狀態。我想我可以理解爲什麼,因爲它試圖多次請求地圖和jQuery。

jquery.min.map 
ajax.googleapis.com/ajax/libs/jquery/1.10.2 
GET 
304 
Not Modified 

jquery.js 
ajax.googleapis.com/ajax/libs/jquery/1.10.2 
GET 
304 
Not Modified 

我該如何解決這個問題?真的,如果這個問題解決了,謝謝。我希望這將在未來有用。

回答

0

好消息。我自己找到了!

這不應該是最好的辦法,我想,但它對我有效。 我將POST查詢從搜索欄轉換爲javascript,並將其作爲參數發送給數據庫中的數據變爲JSON的文件。

var query = '<?php echo json_encode($_POST["query"]); ?>'; 


    $.getJSON("get_markers.php?s=" + query,{ 
     format: "json", 
     dataType: 'json', 
     contentType: "application/json; charset=utf-8"}, 
     function(json) 
     { 
      addMarkers(json); 
      console.log(json); 

     }); 
    } 

然後在get_markers文件:

<?php 
require 'functions/functions.php'; 

$conn = connect_to_db(); 
$search = $_GET['s']; 
$response = array(); 
$query = get_post_by_cat('bedrijven', $search, $conn); 

foreach ($query as $post) { 
    $response[] = array(
     'name' => $post['naam'], 
     'lat' => $post['latitude'], 
     'lng' => $post['longtitude'], 
    ); 
} 

echo json_encode($response); 
?> 

希望這有助於其他人在未來!

相關問題