繁体   English   中英

带<a>标签的</a> Ajax页面加载

[英]Ajax page load with <a> tag

我有一个A-tag,单击该标签后,页面会重新加载并执行某些php代码。 成功执行php代码后,页面将被重定向到同一页面。

现在的问题是,除非您不使用ajax,否则页面会跳到顶部,我认为这是正常的。 因此,如果我可以在下面的代码行中获得一些帮助。

HTML:

<a href="home.php?key=some_value&val=1" id="ajax_reload">Unfollow</a>

在单击上面的链接后,将执行此php代码

PHP:

if(isset($_GET['key']) && isset($_GET['val'])){
            //some task....
            header('location:home.php'); 
        }

注意:如果我可以在不重新加载整个页面的情况下执行此操作,则所有代码都位于同一页面home.php中,这确实会有所帮助。

[编辑]非常抱歉,我没有在问题中添加此内容。 我正在使用php从mysql数据库在页面上显示一堆数据。 因此所有数据都具有相同的ID和类别

要使重定向的页面向下滚动到初始位置,请在位置标题的末尾添加一个片段(#):

if(isset($_GET['key']) && isset($_GET['val'])){
            //some task....
            header('location:home.php#ajax_reload"'); 
}

一个更简单的解决方案是使用标签构建链接,并将标签添加到HTML中,例如:

<a href="home.php#LinkThisPartOfThePage?key=some_value&val=1" id="ajax_reload">Unfollow</a>
<div name="LinkThisPartOfThePage">...</div>

现在您的链接将指向该特定的div

如果要在PHP中执行操作而不重新加载页面,则解决方案是使用ajax。

范例:

HTML:

<a href="#" id="ajaxButton">Click !</a>

Javascript:

$("#ajaxButton").on('click', function() {
   var btn = $(this);
   $.ajax({
        url : 'phpscript.php?key=somevalue&val=1',
        type : 'GET',
        dataType : 'json', 
        success : function(dataObject, statut){ 
            // some tasks ...
            console.log(dataObject);
        },

        error : function(result, statut, error){
            console.log(erreur);
        }
    });
});

PHP的:

<?php
    if(isset($_GET['key']) && isset($_GET['val'])){
        //some task....
        return json_encode($result);
    }
?>

这样,PHP的返回可与javascript一起使用,而无需重新加载

尝试通过ajax做到这一点

<a href="javascript:void(0);" class="ajax_reload" data-key="some_value" data-someval="1">Unfollow</a>
    <script>
    $(function(){
        $('.ajax_reload').on('click',function(){
     $.ajax({
                 url : home.php,
                 type:'POST',
                 data : {key: $(this).data('key'), val:$(this).data('someval')},
                dataType:'json',
                success:function(data)
                {
                    if(data.success==1)
                   location.reload();
                }
            });
    });

});

</script>

在家里.php

if(isset($_POST['key']) && isset($_POST['val'])){
            //some task....
           echo json_encode(array('success'=>1));exit();
       }

它可能包含一些语法错误,这是通过ajax使用它的基本思路

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM