0

我在一个函数中使用它:

$.ajax({
     type: 'POST',
     url: 'demopost.php',
     data: { ... },
     dataType: 'json',
     success: function(data) 
     {
            console.log(data);
     }
  });

demopost.php 只包含一个查询。

输出将是:

在此处输入图像描述

但是我怎样才能在 div 中显示它呢?或者我怎样才能添加一些格式,例如像 php 数组一样的 foreach?

编辑:我试过了(console.log(data)的地方:

$('.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;
        }...
4

3 回答 3

2

您在这里所做的是从服务器返回一些 JSON 数据,这些数据可以通过 javascript 读取,但如果不进行一些处理就被推送到 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 想说的一样,但我觉得有必要说得更清楚一些。

于 2013-02-16T14:36:50.510 回答
1

如果您不处理要发送的数据,您出于什么原因使用 Ajax?如果你只是想格式化数据,你真的不需要 PHP 来做到这一点。

当然有可能。如果您想使用 PHP 进行处理,您需要回显您的格式化结果并使用.done()jQuery API 中描述的函数

http://api.jquery.com/jQuery.ajax/

于 2013-02-16T13:14:39.763 回答
0
$.post('demopost.php',{..}, function(data) {
  $('.inner').html(data);
});

试试这个希望它会有所帮助,并确保你有内部类的 div

于 2013-02-16T13:47:34.800 回答