使用带有Query JSON的POST并迭代MySQL结果

时间:2013-08-14 16:42:56

标签: jquery ajax json

我不确定我在哪里出错了。

当用户点击不同的商品数量时,我正在尝试更改数据表。

我可能错误地使用$ .each()方法,因为我在页面上看不到任何结果,而且我是一个完整的jQuery noob。我感谢任何帮助,谢谢

测试table.html

<!DOCTYPE html>
    <html>
    <head>
    <title>test</title>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript">

        function swapContent(count){
            $(".price-sidebar").html("Put animation here").show();

            $.ajax({
                type: "POST",
                dataType: 'json'
                url: "myphpscript.php",
                data: {countVar: count},
                success: function(data){
                    $('#content').empty();

                    $.each(data, function(){
                        $("#content").append("<tr>");
                        $("#content").append("<td class='store-row'><h5 property='seller'>"+this[MerchantName]+"</h5></td>");
                        $("#content").append("<td class='price-row'><h5 property='price'>$"+this[Price]+"</h5></td>");
                        $("#content").append("<td><a property='url' target='_blank' href='"+this[PageURL]+"' class='btn btn-danger'>GET IT</a></td>");
                        $("#content").append("</tr>");
                    })
                }
            });
        }
    </script>
    </head>
    <body>
        <a href="#" onClick="return false" onmousedown="javascript:swapContent('18');">18</a>
        <a href="#" onClick="return false" onmousedown="javascript:swapContent('48');">48</a>
        <a href="#" onClick="return false" onmousedown="javascript:swapContent('96');">96</a>

        <section class="price-sidebar span8" > 
        <div property="offers" typeof="Offer">               
            <h2>Price Comparison</h2>
            </br>
            <table class="price-data">
                <tr>
                    <th class='store-row'><h4>Store</h4></th>
                    <th class='price-row'><h4>Price</h4></th>
                </tr>
                <div id="content">

                </div>
            </table><!--end price-data-->
           </div><!--end offers-->
        </section><!--end price sidebar-->
    </body>

myphpscript.php

 <?php
    $countVar = $_POST['countVar'];

    $data = PriceCompare($countVar);
    echo json_encode($data);

    function PriceCompare($countVar){
        $DBH = new PDO('mysql:host=localhost;dbname=--','---','---');
        $STH = $DBH->query('SELECT ProductID, MerchantName, Price, PageURL
                            FROM merchants
                            WHERE ProductID=677 AND Count=' . $countVar . '
                            ORDER BY Price');
        $result = $STH->fetchAll();

        return $result;
       }
    ?>

1 个答案:

答案 0 :(得分:2)

你有三个问题:

  1. 您的dataType: 'json'行最后没有逗号。

  2. 访问this.MerchantName等数据。如果您定义了名为this[MerchantName]的变量,则MerchantName有效。

  3. 您要将<tr>追加到#content,然后将<td>追加到#content,而不是将<td>追加到<tr> 1}}。

  4. 试试这个:

    $.each(data, function () {
        $("#content").append(
            $("<tr/>")
                .append("<td class='store-row'><h5 property='seller'>" + this.MerchantName + "</h5></td>");
                .append("<td class='price-row'><h5 property='price'>$" + this.Price + "</h5></td>");
                .append("<td><a property='url' target='_blank' href='" + this.PageURL + "' class='btn btn-danger'>GET IT</a></td>")
        );
    })