User login |
Combine ajax (with prototype lib) and overlibLooking around yahoo's new site what I liked is that popup with news teasser when you So, what came to me was to use the known overlib script for popups and prototype lib for ajax. The solution? We need on mouseout to cancel pending ajax request. But lets see the code. <ul>
<li>
<a href="javascript:void(0);"
onmouseover="get_response(1);"
onmouseout="clear_teasser();">
This is news line #1</a>
</li>
<li>
<a href="javascript:void(0);"
onmouseover="get_response(2);"
onmouseout="clear_teasser();">
This is news line #2</a>
</li>
</ul>Javascript now. Realy simple get_response function fires an ajax request to get from server the The trick here is to hold a global reference of Ajax object to be able to check if var newsAjax=null; function get_response(id) { url = "get_response.php"; params= "id="+id; newsAjax = new Ajax.Request( url, { method: 'get', parameters: params, onComplete: show_teasser} ); } function show_teasser(response) { overlib(response.responseText); newsAjax=null; } function clear_teasser() { if( newsAjax!=null ) { try { newsAjax.transport.abort(); newsAjax=null; } catch(e) {} } nd(); } function reportError() { window.alert('Ajax error'); } Just for completeness server side code that handles ajax request is (just a dummy thing) if( $_GET['id']==1 ) $response = " <h3>Headline</h3> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur consequat placerat orci. Duis tincidunt elit fringilla dui aliquam ultricies. Nunc turpis nisi, ornare non, lacinia sed, iaculis a, odio. Phasellus posuere magna ac libero. Nulla eros. Praesent massa ligula, feugiat in, adipiscing nec, volutpat a, quam. Proin interdum commodo diam. Integer id est ut velit interdum congue. "; else $response = " <h3>Headline</h3> Nam adipiscing, purus at tincidunt euismod, mauris leo gravida arcu, eget tristique nisi magna nec justo. Donec metus metus, placerat eget, rhoncus sit amet, facilisis eget, lacus. Maecenas blandit augue eu pede. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam augue erat, placerat at, pellentesque eu, iaculis eget, nunc. "; echo $response; Hope this was clear and helpful. Links: |