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

ここで行っているのは、サーバーから JavaScript で読み取ることができる JSON データを返すことですが、何らかの処理を行わずに HTML にプッシュするのは役に立ちません。

1 つの解決策は、受け取った 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 エスケープ、非常に粗雑なレイアウトなどはありません。この投稿にいくつかリストされています: jQuery Templates are deprecated? (そして、質問が示唆するのとは異なり、jQuery テンプレートは死んでいませんが、いくつかの競争があります)。

dataType: 'html',ただし、別のアプローチをお勧めします。(JSON ではなく) HTML サーバー側を作成し、通常 PHP で完全な HTML ページを返すのと同じ方法で HTML スニペットを返し、ajax リクエストで 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 に答える