添加喜欢项目而不在PHP中呈现新页面

时间:2016-10-27 16:51:06

标签: php

我试图在页面上显示的项目中添加like选项。

所以工作流程如下:

  1. 用户在网址输入数据
  2. 搜索结果弹出
  3. 喜欢或不喜欢
  4. 我做了以下选项:

     <a href="like.php?type=gifLike&id=<?php echo $item->getId();?>">like</a>
    

    和like.php

    header('Location:gifs.php');
    

    然后点击之后,由于此操作,之前的搜索结果丢失了,因此我收到空白页/通知错误,因为我以前的用户输入数据已经消失。

    是否有任何选项可以在同一页面上添加此类内容?

    好吧,我刚刚意识到搜索结果是随机生成的一种&#39;给定输入的基础,所以看起来我必须在这里使用javascript。

2 个答案:

答案 0 :(得分:1)

如果您想向服务器发出请求但让用户保持在同一页面,您应该使用JavaScript来发出POST请求。

如果你使用jQuery,那就是这样的:

 <head>
     <!-- add jQuery -->
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
 </head>

 <!-- ... -->

 <!-- adding class "like" so we can easily find all elements -->
 <a href="like.php?type=gifLike&id=<?php echo $item->getId();?>" class="like">like</a>
 <!-- repeat more a href... -->


<script>
    // $(function(){... executes after document load (DOM is ready)
    $(function(){
        // add "onclick" event listener to all "a" with class "like"
        $('a.like').on('click', function() {
            // $(this) - the element which was clicked
            // take its attribute "href"
            var url = $(this).attr('href');

            // use POST, not GET so browser and proxies will not cache it
            $.post(url, {}, function(result) {
                alert('You have liked it!');
                console.log(result); // you can get response from server
            });

            // stop going to link URL in browser
            return false;
        });
    });
</script>

答案 1 :(得分:0)

在我看来不是最好的选择,但是如果你想继续使用php,你可以将必要的数据发送回header('Location:gifs.php?data=' . $yourdata);

页面