我用PHP创建了一个包含大量HTML的表。创建后,我将其作为JSON字符串回显,如下所示:
echo json_encode($array['table']);
然后我使用jQuery.parseJSON(returnString);
并尝试将其附加到div。这仅在我返回字符串时有效。当我发送HTML时,它不起作用(在这种情况下根本没有返回任何东西)。
' / " '
符号发送到jQuery之前?编辑:我的$arr['table']
看起来像这样:
$arr['table'] = "<tr class='"{$id}'">lalalal</tr>"
我的JSON是这样的:
'n't't't't't</div>'n't't't't'tfcds'n't't't't't</center>'
您不应该通过JSON发送HTML数据,而应该只是"数据",然后使用javascript创建新的HTML元素并使用这些新元素修改dom。
一个jQuery示例:
var json_doc = $.getJSON('http://yourservice.com/yo/');
var tr = $(document.createElement('tr'));
tr.attr('id', json_doc.responseText.id);
tr.html(json_doc.responseText.html);
$('table').append(tr);
你的http://yourservice.com/yo/
的反应将是:
{id: 1, html: "lalalal"}
说明
正如@tkone指出的:你不应该通过JSON发送HTML数据,这不是它的目的。
这是可以做到的,但是不应该做
输出所有HTML,并在服务器页面上进行所有处理,然后作为HTML返回
这样的
//Connect
$link = mysql_connect($server, $user, $password);
//Select
mysql_select_db($db, $link);
//Query
$result = mysql_query($query);
$data = $_GET['some_data'];
//Loop
echo "<table id='$data'>";
while($row = mysql_fetch_array($result)){
echo "<tr>";
foreach($row as $key => $value){
echo "<td>$value</td>";
}
echo "</tr>";
}
echo "</table>";
//Cleanup
mysql_free_result($result);
mysql_close($link);
Javascript var data = {"some_data": "Foobar"};
$.get("server_page.php", data, function(response){
$("#output").html(response);
});
或者,您将其输出为JSON信息,其中包含可以在Javascript中处理的数据
这样的
//Connect
$link = mysql_connect($server, $user, $password);
//Select
mysql_select_db($db, $link);
//Query
$result = mysql_query($query);
$num_result = mysql_num_rows($result);
$data = array(
"mysql_data" => array(),
"num_result" = $num_result
);
//Loop
while($row = mysql_fetch_array($result)){
$data['mysql_data'][] = $row;
}
echo json_encode($data);
//Cleanup
mysql_free_result($result);
mysql_close($link);
Javascript $.getJSON("server_page.php", function(data){
alert("Number of rows returned from query: "+data.num_result);
});
但是你不应该把这两种不同的方法混在一起。你必须决定在哪里处理所有的逻辑,并在那里传递你需要的所有数据。
<标题> 解决方案
正如你自己指出的,
"<tr class='"{$id}'">lalalal</tr>"
是错误的JSON。
应该是
"<tr class='{$id}'>lalalal</tr>"
所有JSON必须共享相同的引号,即,如果你使用" '' "
或' "" '
。
我建议你在服务器端做你所有的逻辑。您总是可以通过POST或GET发送来自Javascript的请求中的一些数据。这是双向的
标题>我认为你只需要在发送给jq之前转义特殊字符。我通常使用这个库http://phpjs.org/functions/htmlspecialchars:426来编码特殊字符…
如果我可以这样称呼它,我发现了一个错误。在我把'"{$id}'"
改成'{$id}'
之后,它工作了。