如何从PHP获取信息而不刷新页面

时间:2011-05-22 03:53:35

标签: ajax jquery

喜 对不起的标题感到抱歉,但我不能100%确定我对此问题的需求

我创建了一个欢迎页面,然后当您点击链接时,您会获得更多信息,例如:

<a href="?id=1">Click Me</a>

然后php会根据id获取信息。 所以收到的信息会在页面刷新后重新加载到页面上

我希望能够做的是当用户点击链接时,使用jquery不允许链接运行但仍然在后台运行网址(不刷新页面)

我不知道从哪里开始所以我真的希望你能帮忙

感谢

5 个答案:

答案 0 :(得分:2)

简而言之,它被称为Ajax:通过javaScript向服务器发送HTTP请求,并接收可包含结果,数据或其他信息的响应。

你提到了jQuery,这里有关于它的文档: http://api.jquery.com/jQuery.get/ http://api.jquery.com/jQuery.post/

是便捷方法,它使用预设选项封装$ .ajax。

http://api.jquery.com/category/ajax/概述了jQuery中的整个系统。

基础知识就像

//include jquery, etc.
$(document).ready(function(){
    $('#some_element').click(function(){
       $.get('some_url_on_your_server.php',{'data':'whatever params'},function(data){
          do_something();//
       },'json');
    });

这将绑定一个元素以在单击时进行Ajax调用,然后使用函数('success'函数,在$ .ajax中)来处理json数据。

让您的服务器使用php中的json_encode以JSON发回数据。请务必发回正确的标题,例如

<?php
header('Content-Type: application/json');
echo json_encode($some_array);
exit;

网上有很多资源和SO用于学习Ajax,这是一个很大的话题。祝你好运。

答案 1 :(得分:1)

创建一个JavaScript函数,如sendData(linkId),然后每个标记都有一个名为sendData(this)的onclick事件。 SendData(linkId)然后可以对php文件执行HTTPRequest(也称为异步或AJAX请求),让我们称之为handler.php,它接收GET或POST方法。我更喜欢使用原型框架来做这种事情(你可以在prototypejs.org上得到它)。

好的,现在我已经说了所有这些,让我们来看看如何做到这一点的细节(为简化说明而简化的方式)。

下载原型脚本,将其保存在您的服务器上(例如原型/ prototype.js),然后将其放在您的html中<script type='text/javascript' language='Javascript' src='prototype/prototype.js'></script>

您的代码如下所示:<a id='exampleLink' onclick = 'sendData(this)'>Click me!</a>

您需要使用JavaScript执行此操作:function sendData(tagId){ var url = 'handler.php?' + 'id=' + tagId; var request = new AJAX.Request(url, {method = 'get'}); }

最后,您需要一个包含以下内容的php文件(让我们称之为handler.php):<?php $tag_to_get = $_GET['tagId']; do_a_php_function($tag_to_get); ?>

简而言之,但值得一提的是,您应该向用户提供某种反馈,点击链接即可。否则,他会疯狂地点击链接等待事情发生,当它实际上正在做它应该但秘密的事情。你可以通过让你的php脚本在最后回显一些东西,比如'Success!',然后在你的JavaScript的新Ajax.Request中添加一个onSuccess参数。我将让您自己阅读如何做到这一点,因为原型网站解释了如何从处理程序接收响应并将反馈放在HTML中的某处而不会让用户刷新。

答案 2 :(得分:0)

你可以使用名为$ .get的jquery函数来实现这种行为...你可以在这里获得更多关于如何使用的信息http://api.jquery.com/jQuery.get/

答案 3 :(得分:0)

如果你真的想要(而且我认为你并不这样做),你可以使用XMLHTTPRequest(包含在jQuery.get中)来帮助将内容加载到页面中而无需刷新页面。您希望该标记上有idclass,即<a href="?id=1" class="fetch">Click Me</a>,然后:

<script>
    $(".fetch").bind("click", function(evt)
    {
        $.get(this.attr("href"), function(data)
        {
            $("#whereIWantMyContent").html(data);
        });
        evt.preventDefault();
    });
</script>

答案 4 :(得分:0)

我建议您先使用AJAX。存在的好地方是http://www.w3schools.com/Ajax/Default.Asp

链接附带一个方便的AJAX ASP / PHP示例=))

祝你好运。