开发者

how to get information from php without refreshing the page

hi sorry for the bad title but I'm not 100% sure what I n开发者_JAVA技巧eed for this problem

I created a welcome page and then when you click on links you get more information, for example:

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

And then the php would get the information based on the id. so the information received is reloaded on the page after the pages refreshes

what I would like to be able to do is when user clicks on the link, use jquery to not allow the link to run but still run the url in the background (without refreshing the page)

I have no idea where to start from so I really hope you could help

thanks


In a nutshell, it's called Ajax: sending an HTTP request to your server through javaScript, and receiving a response which can contain results, data, or other information.

You mention jQuery, here are the docs about that: http://api.jquery.com/jQuery.get/ http://api.jquery.com/jQuery.post/

are convenience methods, which encapsulate $.ajax with preset options.

http://api.jquery.com/category/ajax/ is an overview of the whole system in jQuery.

The basics go like

//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');
    });

This will bind an element to make an Ajax call on click, and then you use the function ('success' function, in $.ajax) to handle the json data.

Have your server send back the data in JSON by using json_encode in php. Be sure to send the right header back, like

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

There's a lot of resources on the web and SO for learning about Ajax, it's a big topic. Best of luck.


Make a JavaScript function, like sendData(linkId) and then each tag would have an onclick event called sendData(this). SendData(linkId) can then do an HTTPRequest (also known as an asynchronous or AJAX request) to a php file, let's call it handler.php, which receives GET or POST methods. I prefer using the prototype framework to do this kind of thing (you can get it at prototypejs.org).

Okay, now that I have said all that, let's look into the nitty-gritty of how to do this (way simplified for illustrative purposes).

Download the prototype script, save it on your server (like prototype/prototype.js, for example) and then put somewhere in your html <script type='text/javascript' language='Javascript' src='prototype/prototype.js'></script>

Your tags would look like this:<a id='exampleLink' onclick = 'sendData(this)'>Click me!</a>

You need JavaScript to do this: function sendData(tagId){ var url = 'handler.php?' + 'id=' + tagId; var request = new AJAX.Request(url, {method = 'get'}); }

Finally, you need a php file (let's call it handler.php) that has the following: <?php $tag_to_get = $_GET['tagId']; do_a_php_function($tag_to_get); ?>

That's it in a nutshell, but it's worth mentioning that you should give your user some sort of feedback that clicking link did something. Otherwise he will click the link furiously waiting for something to happen, when it is actually doing just what its supposed to but in secret. You do that by making your php script echo something at the end, like 'Success!', and then add an onSuccess parameter to your JavaScript's new Ajax.Request. I'll let you read how to do that on your own because the prototype website explains how to receive a response from the handler and put the feedback somewhere in your HTML without making the user refresh.


you can achieve that behavior with a jquery function called $.get ... you can get more information on how to use here http://api.jquery.com/jQuery.get/


If you really want to (and I don't think you really do), you can use XMLHTTPRequest (wrapped in jQuery.get) to facilitate loading content into the page without page refreshing. You want an id or class on that tag, i.e. <a href="?id=1" class="fetch">Click Me</a>, and then:

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


I would recommend you use AJAX to start with. A good place to being is http://www.w3schools.com/Ajax/Default.Asp

The link comes with a handy AJAX ASP/PHP Example too =))

Good Luck.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜