【问题标题】:Comparing products using PHP keeping the product on page as cookie使用 PHP 比较产品,将产品作为 cookie 保留在页面上
【发布时间】:2015-05-11 01:35:39
【问题描述】:

到目前为止,我正在尝试制作一个简单的产品比较系统,当我单击添加到比较按钮时,我能够做到这一点,我发送 jquery ajax 请求并获得该产品的回调响应但我不知道如何将产品保留在页面上或将比较容器上的项目显示为 cookie,因此当用户刷新产品时,我的代码仍然存在,

COMPARE.PHP

    <html>
    <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

    <script>
    $(document).ready(function(){
    $('.compare').click(function(){
    a = this.parentNode.getAttribute('data-compare-id');
       $.get('post.php?id='+a,status,foo);  
    });

    });             
         function foo(data){                  
         console.log();             
         }             
    </script>
    </head>
    <body>

         <?php         
    mysql_connect("localhost",'root','GoogleFacebook') or die(mysql_error());
    mysql_select_db('phones') or die(mysql_error());
    $query = mysql_query("SELECT * FROM mobiles");
    while($row = mysql_fetch_array($query)){

         echo "<div class='phone' data-compare-id='".$row['id']."' style='display:inline-block;margin:10px;border:1px solid #ddd;padding:10px;' >";
         echo "<a href='".$row['phone_a']."' >";
         echo $row['phone_name']."</br>";
         echo "<img src='".$row['phone_img']."' />";
         echo "</br>";
         echo "</a>";
         echo "<button class='compare'>Compare</button>";
         echo "</div>";        
    }
    ?>

         <div class='compare_container'> 
         </div>
    </body>

</html>

post.php

<?php
if($_SERVER['REQUEST_METHOD'] == 'GET'){
$id = $_GET['id'];
mysql_connect("localhost",'root','GoogleFacebook') or die(mysql_error());
mysql_select_db('phones') or die(mysql_error());
$query = mysql_query("SELECT * FROM mobiles WHERE id='$id'");
$row = mysql_fetch_array($query);
echo "<img src='".$row['phone_img']."' />";
echo "<span>".$row['phone_name']."</span>";}
?>

我很困惑如何保留页面上的内容

【问题讨论】:

    标签: php jquery mysql ajax cookies


    【解决方案1】:
    $.get('post.php?id='+$(this).parent().attr('data-compare-id'),function (data) { 
        $('.compare_container').append(data);
    },'html');
    

    如果您使用的是 jquery,您应该使用 $() 来查找您的 dom 元素。上面的代码将对 post.php 进行 ajax get 调用并获取您的 html。它会将结果作为数据变量通过函数传递,然后将该数据附加到容器中。

    不过,您的代码还有其他问题。您应该转义所有 get 令牌以避免 SQL 注入,最好使用 mysqli(改进)而不是 mysql。您还应该避免使用 SELECT * 以避免在数据库上使用过多的资源——请改用 SELECT phone_img,phone_name。

    此外,经过进一步审查,当最新版本为 2+ 时,您正在加载 jquery 1.11.2,这可能会给您带来问题。

    【讨论】:

    • 我可以附加产品,但如何使用 cookie 将产品保存在 compare_container 中,安全性不是我在 localhost 中所做的所有事情的问题,在实时站点上我将使用 mysql_real_escape_string 并且我错误地使用了那个旧版本的 jquery
    • 在我看来,最简单的方法是使用会话变量。将 id 值作为数组存储在会话变量中,如果它们刷新页面,则使用该数组显示值。您每次都使用 ajax get 请求访问服务器,因此只需使用 array_push 将 id 添加到会话变量中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多