2014-09-11 85 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数据。