【问题标题】:Iterate over non jquery function/plugin迭代非 jquery 函数/插件
【发布时间】:2014-11-06 15:51:46
【问题描述】:

我不知道如何做到这一点,我用谷歌搜索并搜索了 stackoverflow 但什么也没有,我确实找到了iterate over raty,但这并不是同一个问题。

这是我的问题。我正在使用 ajax 从查询 MySQL 数据库以获取结果的 php 脚本中获取数组。那里的一切都是直截了当的,它返回一个数组。下面是rate.php 文件。然后我使用$.each 遍历数组以显示div 我想做的是将.raty 评级系统添加到每次迭代中。目前,评级系统(星)被添加到所有记录的底部/末尾,而不是每次迭代。我怎样才能做到这一点?下面是代码

以数组形式返回结果的'rate.php'文件

    <?php
    require_once("../auth/config.class.php");
    require_once("../pages/request.class.php");


    $config = new Config;

    $dbh = new PDO("mysql:host=" . $config-> dbhost . ";dbname=" . $config->dbname,  $config->dbuser, $config->dbpass);

    $request = new Request($dbh, $config);

    $rateme = $request->rateCare();

        echo $_GET['callback'] . '('.json_encode($rateme).')';
        //echo json_encode($rateme);
        //  var_dump($rateme);

    ?>

显示结果的 html 文件 rating.php

    <?php

    $page_title = "IntelyCare: Rating ";
    //$page_description = "Description of this page";
    require_once    ("../template/header.php");
    ?>

    <body>



    <div data-role="page">
    <script type="text/javascript">

    $(document).ready(function()
    {


         $.ajax({
            type: "GET",
            cache:false,
            url: "../pages/rate.php",
            dataType:'jsonp',

            success: function(data){
                    $.each(data, function()
                    {

                        $('#care').append("Date: " + this.caredate + '<br/ >');
                        $('#care').append("Care Giver: " + this.fname + "  " + this.lname );
                        $('#care').append('<br />');
                        $('#care').append('<br />');

                        $('#star').raty({
                            starType: 'i',
                            hints: ['Poor', 'Ok', 'Good', 'Very Good', 'Excellent' ]    
                            });

                    });


                                }
                });

    });                 


            </script>
    <div data-role="header" >
        <h1>IntelyCare</h1>
    </div>

    <div data-role="main" data-theme="a" class="ui-content">
        <div data-role="content">
        <h3>Rate Caregiver</h3>
            <div id="care">

            </div>
            <div id="star"></div>
        </div>
    </div>
    </div>
    </body>
    </html> 

更新工作Javascript

    $(document).ready(function()
    {   

         $.ajax({
            type: "GET",
            cache:false,
            url: "../pages/rate.php",
            dataType:'jsonp',

            success: function(data){
                    $.each(data, function(id, obj)
                    {
                        divid= obj.id
                        para = $('<div id="'+ divid + ' ">'+'</div>');
                        $('#care').append("Date: " + obj.caredate + '<br/ >');
                        $('#care').append("Care Giver: " + obj.fname + "  " + obj.lname );
                        $('#care').append(para);
                        $('#care').append('<br />');
                        $('#care').append('<br />');                            
                        $(para).raty({
                            starType: 'i',
                            hints: ['Poor', 'Ok', 'Good', 'Very Good', 'Excellent' ]    
                            });

                      });   



                    }


                }); 
    });                 
    </script>

【问题讨论】:

  • 你确定第一部分有效吗?您没有从您的 php 脚本返回有效的 json。
  • @jeroen 是的,第一部分工作我正在返回 jsonp
  • 听起来你想要一个 #star 元素来为你附加到 #care 的所有内容。您需要更改标记,以免在每次循环迭代中对同一元素调用 .raty
  • 这正是我想要的。 #star 每次迭代的元素。我不确定我是否遵循...你能给我举个例子吗?

标签: php jquery ajax raty


【解决方案1】:

编辑

安德烈有权发表评论。您始终将.raty 附加到#star。将带有 id="rate{uniqueidhere}" 的 div 添加到 #care,将其附加到 2 个换行符之前,并将 .raty 附加到新添加的元素。

【讨论】:

  • 我在显示对象时没有任何问题,我想为每次迭代显示.raty 评级系统。
  • 感谢您的快速反馈,它似乎已经接近但还没有。我添加了一个var para = $('&lt;div id="rate"&gt;'+'&lt;/div&gt;'); 并将.raty 附加到它$('#rate').raty 它现在显示在第一次迭代中,但不是全部。
  • 因为id 属性应该始终是唯一的!添加唯一 ID。
  • id 属性 &lt;div id="rate"&gt;&lt;/div&gt; 速率是唯一的,未在其他任何地方使用。这些是使用的 3 个 ID。 rate/star/care
  • 你说迭代。所以你需要rate1rate2rate3,在each等等。如果你总是使用rate,那么当你说$('#rate')将是这个id的最后一个元素。跨度>
猜你喜欢
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 2012-02-12
  • 1970-01-01
  • 2012-06-06
  • 2016-02-18
相关资源
最近更新 更多