我在函数中使用它:
$.ajax({
type: 'POST',
url: 'demopost.php',
data: { ... },
dataType: 'json',
success: function(data)
{
console.log(data);
}
});
demopost.php只包含一个查询。
输出将是:
但我如何在div中显示它?或者如何添加一些形式,例如与foreach一样的php数组?
编辑: 我尝试了它(console.log(数据)的地方:
$('.inner').append(data);
当然有一个内心阶级的div。但没有显示
EDIT2: demopost.php中的查询:
... try
{
$c_id = htmlspecialchars($_POST['cid']);
$leftprice = $_POST['left'];
$rightprice = $_POST['right'];
$items=$main->pdo->prepare("SELECT name, price FROM clf_items WHERE category_id IN (
SELECT node.id
FROM clf_category AS node,
clf_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt AND price BETWEEN :left AND :right
AND parent.id = :c_id)");
$items->execute(array(':c_id' => $c_id, ':left' => $leftprice, ':right' => $rightprice));
$items_array = array();
while ($row = $items->fetch(PDO::FETCH_ASSOC))
{
$items_array[] = $row;
}
echo json_encode($items_array);exit;
}...
答案 0 :(得分:2)
你在这里做的是从服务器返回一些可以通过javascript读取的JSON数据,但没有一些处理就没有用到推送到HTML中。
一种解决方案是获取您收到的JSON数组,并在将其推送到页面之前将其转换为HTML字符串。这可能看起来像:
success: function(data)
{
var result = '<table>';
for (i=0; i<data.length; i++) {
result += '<tr><td>'+ data[i].name+'</td><td>'+data[i].price+'</td></tr>';
}
result+= '</table>';
$(".inner").html(result);
}
现在这没有钱格式化,没有html转义,非常粗糙的布局等pp。在你尝试将这个原始草图变成有用的东西之前,我建议你查看可用于jQuery的各种模板引擎;这篇文章中列出了一些:jQuery Templates are deprecated?(与问题不同,jQuery模板并没有死,但有一些竞争)。
但是我更喜欢另一种方法:创建HTML服务器端(而不是JSON),因此返回HTML代码段的方式与通常在PHP中返回完整HTML页面的方式相同,并且在ajax请求中表示您需要HTML :dataType: 'html',
然后您可以将结果直接推送到$(".inner").html(data)
(或$(".inner").append(data)
,不知道您的HTML应该如何显示),就像您最初想要的那样。
我想这与schwierig想说的相同,但我觉得有必要更明确地说出来。
答案 1 :(得分:1)
如果您不处理正在发送的数据,您使用Ajax的原因是什么?如果你只想格式化数据,那么你真的不需要PHP来做这件事。
当然有可能。如果要使用PHP进行处理,则需要回显格式化结果并使用jQuery API中描述的.done()
函数
答案 2 :(得分:0)
$.post('demopost.php',{..}, function(data) {
$('.inner').html(data);
});
尝试这个希望它会有所帮助,并确保你有内部类的div