2014-09-11 140 views
0

我將一些html元素(或實際上是< rect> svg元素)作爲字符串存儲在數據庫中。PHP echo數據 - 附加到html元素

我有一個PHP是回顯數據:

$db = getConnection(); 
$statement = $db->prepare('SELECT `copy` FROM `draggable`'); 
$statement->execute(); 
$result = $statement->fetchAll(PDO::FETCH_ASSOC); 
$numberOfElements = count($result); 
for ($i = 0; $i < $numberOfElements; $i++) { 
    echo $result[$i]['copy']; 
} 
$statement->closeCursor(); 

回送的結果在瀏覽器中的反應是:

<rect class="draggable" x="385.53125" y="139" width="50" height="50" style="fill: rgb(0, 128, 0); fill-opacity: 0.2; position: relative; left: -445.46875px; top: 13px;" id="TmOZB"></rect> 
<rect class="draggable" x="140.53125" y="276" width="50" height="50" style="fill: rgb(0, 0, 255); fill-opacity: 0.2; position: relative; left: -710.46875px; top: 148px;" id="wQXtQ"></rect> 
<rect class="draggable" x="293.53125" y="99" width="50" height="50" style="fill: rgb(255, 0, 0); fill-opacity: 0.2; position: relative; left: -548.46875px; top: -28px;" id="atlxR"></rect> 
<rect class="draggable" x="73.53125" y="136" width="50" height="50" style="fill: rgb(0, 128, 0); fill-opacity: 0.2; position: relative; left: -762.46875px; top: 18px;" id="fLuJl"></rect> 

現在我想通過Ajax來得到這一結果,並追加它到一個svg元素(編號爲#mapa)。這是我到目前爲止:

$('#mapa').append($.post('./getElements')); 

但它不起作用。我應該改變什麼?

+0

究竟哪些方法無效? – LorDex 2014-09-11 11:22:00

+0

我希望看到svg元素#mapa中的回顯元素,這意味着在屏幕上看到它們,現在不會發生這種情況。 – oneday 2014-09-11 11:25:46

回答

2

$.post()返回jqXHR,而不是請求的結果。同時請求也是異步執行的。所以,你可以在$.post成功回調請求的結果添加到元素:

$.post('./getElements', function(data) { $('#mapa').append(data); })); 
+0

它似乎幾乎工作,但它不會被追加作爲console.log返回字符串與很多反斜槓,如:「 oneday 2014-09-11 11:54:14

+0

@oneday看看[fiddle](http://jsfiddle.net/rob2ewky/1/)處理替換。 – Regent 2014-09-11 12:14:46

1

假設你的PHP文件的getElements試試這個

$.post("./getElements", function(data) { 
    $('#mapa').append(data); 
}); 
0
$.post("./getElements", dataType:"html", function(data) { 
    $('#mapa').html(data); 
    // or 
    $('#mapa').append(data); // (your case) 
    }); 

檢查請求的URL(./getElements),如果它是有權返回HTML數據。