2013-10-22 49 views
0

我使用getJson()函數從php中動態檢索服務器的內容。該代碼是這樣的:json和php interegation

function loadContent(url){ 
     $.getJSON("content.php", {cid: url, format: 'json'}, function(json) { 
       $.each(json, function(key, value){ 
        $(key).html(value); 
       }); 
      }); 
     } 

content.php從MySQL得到了一些數據,並生成一個數組,並將其編碼到JSON格式陣列,然後用JavaScript我打印在main_page.html。我想要做的是content.php的輸出是一個字符串(或數組中的一行)與html代碼(結合來自mysql的數據)。因爲我不想只打印一個數組。例如,我想content.php輸出是這樣的:

<div id="content"> 
    <div id="one"> 
    some html code combined with data from mysql. 
    </div> 
    <div id="two"> 
    some html code combined with data from mysql. 
    </div> 
    . 
    . 
    . 
</div> 

而這一切將其打印在<div id="main"> ..output of content.php.. </div>在main_page.html。因此,json函數不必循環此代碼 $.each(json, function(key, value){ $(key).html(value);} 並完成一個打印。

回答

0

如果我理解正確,那麼您可以使用$ .get()來獲得所需的結果。

function loadContent(url){ 
    $.get("content.php", {cid: url}, function(data) { 
     $("#content").html(data); 
    }); 
} 

並修改您的content.php返回純html而不是json編碼的數據。

<?php 
$stmt = $dbh->prepare("SELECT name FROM items"); 
$stmt->execute(); 
$result = $stmt->fetchAll(); 
$i = 1; 

foreach($result as $item) { 
    echo '<div id="item' . $i . '">' . $item['name'] . '</div>'; 
} 
?> 
+0

謝謝你,他工作得很好!但我現在有另一個問題。我使用pushstate()和popstate()虛擬地在瀏覽器中創建歷史鏈接(與get(url)結合)。要使用上面的代碼,我將所有鏈接都解析爲content.php。例如 '...'所以content.php的id = 1。但瀏覽器顯示www.mysite.com/1,當我刷新頁面時,它顯示404正在嘗試查找文件1.我希望www.mysite.com/1將'1'解析爲content.php並且鏈接爲 '...'(或者與上述idont相同)。 – user2901167

+0

你可以使用.htaccess來重寫URL中的content.php到id之後的所有內容。 – ronalds

+0

我有兩頁。主頁是index.php,另一個是content.php,它產生的數據可以通過get(url)在index.php中檢索。當您訪問www.mysite.com時,如何顯示index.php?當你訪問www.mysite.com/1234顯示index.php並從id = 1234的content.php中檢索數據時?這是用.htaccess完成的?你知道什麼代碼.htaccess必須有? – user2901167